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.
解法
排序+双指针
/**
* @Author RenXintao
* @Date 9/6/17
* @Time O(nlogn) @Space O(n)
* @Desc 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.
*/
public class TwoSumII_01 {
public int twoSum(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return 0;
}
int left = 0, right = nums.length - 1;
int ans = 0;
while (left < right) {
if (nums[left] + nums[right] > target) {
ans += right - left;
right--;
} else {
left++;
}
}
return ans;
}
public static void main(String[] args) {
TwoSumII_01 twoSumII01 = new TwoSumII_01();
// int[] nums = {2, 7, 11, 15};
// int target = 24;
int[] nums = {5, 4, 3, 7, 8};
int target = 9;
int ret = twoSumII01.twoSum(nums, target);
System.out.print(ret);
}
}