描述
給定一個整數數組,找出這個數組中有多少對的和是小于或等于目標值。返回對數。
樣例
給定數組為 [2,7,11,15],目標值為 24
返回 5。
2+7<24
2+11<24
2+15<24
7+11<24
7+15<24
思路
同上面兩數之和大于target的follow up類似,只是固定端變成了左指針
代碼
public class Solution {
/*
* @param nums: an array of integer
* @param target: an integer
* @return: an integer
*/
public int twoSum5(int[] nums, int target) {
if (nums == null && nums.length < 2) {
return 0;
}
Arrays.sort(nums);
int left = 0, right = nums.length - 1;
int count = 0;
while (left < right) {
int sum = nums[left] + nums[right];
if (sum > target) {
right--;
} else {
//這兩行語句順序不能顛倒,因為left變化會影響count值
count += right - left;
left++;
}
}
return count;
}
}