购物车内的商品价格按照升序记录于数组 price
。请在购物车中找到两个商品的价格总和刚好是 target
。若存在多种情况,返回任一结果即可。
示例 1:
输入:price = [3, 9, 12, 15], target = 18 输出:[3,15] 或者 [15,3]
示例 2:
输入:price = [8, 21, 27, 34, 52, 66], target = 61 输出:[27,34] 或者 [34,27]
LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode)
二分查找法(纯粹想练一下二分查找)
class Solution {public int[] twoSum(int[] price, int target) {int[] result = new int[2];for(int i = 0; i < price.length; i++){if(binarySearch(price, 0 , price.length -1, target - price[i])){result[0] = price[i];result[1] = target - price[i];}}return result;}private boolean binarySearch(int[] arr , int left, int right, int target){int mid = left + (right - left)/2;if(left > right){return false;}if(arr[mid] == target){return true;} else if(arr[mid] > target){return binarySearch(arr, left , mid - 1 , target);} else{return binarySearch(arr, mid + 1 , right , target);}}
}
双指针法:
class Solution {public int[] twoSum(int[] price, int target) {int i = 0, j = price.length - 1;while(i < j) {int s = price[i] + price[j];if(s < target) i++;else if(s > target) j--;else return new int[] { price[i], price[j] };}return new int[0];}
}作者:Krahets
链接:https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/solutions/164083/mian-shi-ti-57-he-wei-s-de-liang-ge-shu-zi-shuang-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
拓展题目:
待传输文件被切分成多个部分,按照原排列顺序,每部分文件编号均为一个 正整数(至少含有两个文件)。传输要求为:连续文件编号总和为接收方指定数字 target
的所有文件。请返回所有符合该要求的文件传输组合列表。
注意,返回时需遵循以下规则:
- 每种组合按照文件编号 升序 排列;
- 不同组合按照第一个文件编号 升序 排列。
LCR 180. 文件组合 - 力扣(LeetCode)
List<int[]> vec = new ArrayList<int[]>();int sum = 0, limit = (target - 1) / 2; // (target - 1) / 2 等效于 target / 2 下取整for (int i = 1; i <= limit; ++i) {for (int j = i;; ++j) {sum += j;if (sum > target) {sum = 0;break;} else if (sum == target) {int[] res = new int[j - i + 1];for (int k = i; k <= j; ++k) {res[k - i] = k;}vec.add(res);sum = 0;break;}}}return vec.toArray(new int[vec.size()][]);作者:力扣官方题解
链接:https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/solutions/128296/mian-shi-ti-57-ii-he-wei-sde-lian-xu-zheng-shu-x-2/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。