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);
}
}

本文介绍了一种高效算法,用于查找整数数组中所有和大于特定目标值的数对,并返回这些数对的数量。该算法采用排序加双指针策略实现,时间复杂度为O(n log n),空间复杂度为O(n)。
151

被折叠的 条评论
为什么被折叠?



