443 · Two Sum - Greater than target
Medium
Description
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.
Only $39.9 for the “Twitter Comment System Project Practice” within a limited time of 7 days!
WeChat Notes Twitter for more information(WeChat ID jiuzhang15)
Example
Example 1:
Input: [2, 7, 11, 15], target = 24
Output: 1
Explanation: 11 + 15 is the only pair.
Example 2:
Input: [1, 1, 1, 1], target = 1
Output: 6
Challenge
Do it in O(1) extra space and O(nlogn) time.
解法1:
class Solution {
public:
/**
* @param nums: an array of integer
* @param target: An integer
* @return: an integer
*/
int twoSum2(vector<int> &nums, int target) {
int n = nums.size();
sort(nums.begin(), nums.end());
int start = 0, end = n - 1;
int count = 0;
while (start < end) {
int sum = nums[start] + nums[end];
if (sum > target) {
count += end - start;
end--;
} else if (sum <= target) {
start++;
}
}
return count;
}
};