Given an array of integers, find how many pairs in the array such that their sum is bigger than a specific target number. Please return the number of pairs.
这种题目,相当于是固定一个然后变化另外一个,然后统计总数
java
public class Solution {
/*
* @param nums: an array of integer
* @param target: An integer
* @return: an integer
*/
public int twoSum2(int[] nums, int target) {
// write your code here
if (nums == null || nums.length < 2) {
return 0;
}
Arrays.sort(nums);
int left = 0;
int right = 1;
int value = 0;
int count = 0;
while (left < nums.length - 1) {
if (right < nums.length) {
value = nums[left] + nums[right];
if (right < nums.length && value <= target) {
right++;
} else {
count += (nums.length - right);
left++;
right = left + 1;
}
} else {
left++;
right = left + 1;
}
}
return count;
}
}
python
class Solution:
"""
@param: nums: an array of integer
@param: target: An integer
@return: an integer
"""
def twoSum2(self, nums, target):
# write your code here
if nums == None or len(nums) < 2:
return 0
left, right = 0, len(nums) - 1
value, count = 0, 0
nums.sort()
while left < right:
value = nums[left] + nums[right]
if left < right and value <= target:
left += 1
if left < right and value > target:
count += (right - left)
right -= 1
return count