当前位置: 首页> 文旅> 旅游 > 手机在线app下载_敦煌网外贸论坛_搜易网服务介绍_哪些网站有友情链接

手机在线app下载_敦煌网外贸论坛_搜易网服务介绍_哪些网站有友情链接

时间:2025/7/9 11:23:21来源:https://blog.csdn.net/2301_79184547/article/details/142714471 浏览次数:0次
手机在线app下载_敦煌网外贸论坛_搜易网服务介绍_哪些网站有友情链接

题目链接LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode)

1.常规解法(会超时)

采用双层遍历这个数组一次判断两数之和是否等于目标值,代码如下:

    public int[] twoSum(int[] price, int target) {int[] arr = new int[2];int n = price.length;for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {if (price[i] + price[j] == target) {arr[0] = price[i];arr[1] = price[j];break;}}}return arr;}

2.双指针算法

为了方便,我们可以先将数组从小到大排序,再定义指针left和right,left指向首元素,right指向末元素。

判断left和right指向元素的和与目标值的大小关系,若和大于目标值,以right为基准,left右边的值均大于left指向的值,根据单调性,left右边的值与right相加的和均大于目标值,就需要让right向左移动一位;若和小于目标值,以left为基准,right左边的值与left的和均小于目标值,就需要让left向右移动一位。

若找到,即退出循环,若left>=right时,则返回空数组。

流程图和代码如下:

    public int[] twoSum(int[] price, int target) {int[] arr = new int[2];Arrays.sort(price);int left = 0;int right = price.length - 1;while (left < right) {if (price[left] + price[right] < target) {left++;} else  if (price[left] + price[right] > target) {right--;} else {arr[0] = price[left];arr[1] = price[right];break;}}return arr;}

 希望读者能指点一二!

关键字:手机在线app下载_敦煌网外贸论坛_搜易网服务介绍_哪些网站有友情链接

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: