Find Pairs Sum Less Than Target
题目:
在一个很大的数组中找出a,b两个数,这两个数的和要小于等于一个x,求这种组合的个数。
解题思路:
这道题就是双指针可以解决的。
代码:
在一个很大的数组中找出a,b两个数,这两个数的和要小于等于一个x,求这种组合的个数。
解题思路:
这道题就是双指针可以解决的。
代码:
public class FindPairsSumLessThanTarget { public List<List<Integer>> find(int[] nums, int target){ List<List<Integer>> rst = new ArrayList<>(); if(nums == null || nums.length == 0){ return rst; } Arrays.sort(nums); for(int i = 0; i <= nums.length - 2; i++){ if(i != 0 && i <= nums.length - 2 && nums[i - 1] == nums[i]){ i++; } int left = i; int right = nums.length - 1; while(left < right){ int sum = nums[left] + nums[right]; if(sum <= target){ List<Integer> list = new ArrayList<>(); list.add(nums[left]); list.add(nums[right]); rst.add(list); } right--; while(left <= right && nums[right] == nums[right + 1]){ right--; } } } return rst; } public static void main(String[] args){ FindPairsSumLessThanTarget findPairsSumLessThanTarget = new FindPairsSumLessThanTarget(); int[] nums = {1, 1, 2, 2, 3, 4, 5, 6, 7}; List<List<Integer>> rst = findPairsSumLessThanTarget.find(nums, 8); System.out.println(rst); } }

Comments
Post a Comment