有多种解法,一种是排序+双指针,其实数据量只有50,直接暴力也可以
cppclass Solution {
public:
int countPairs(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
int result = 0;
int left = 0, right = nums.size() - 1;
while (left < right) {
int sum = nums[left] + nums[right];
if (sum < target) {
// 如果当前的和小于目标值,说明所有右指针在 left 右侧的元素都可以与 left 组成满足条件的下标对
result += right - left;
left++;
} else {
// 如果当前的和不小于目标值,减小右指针,尝试找到更小的和
right--;
}
}
return result;
}
};
cppclass Solution {
public:
int countPairs(vector<int>& nums, int target) {
int result = 0;
int n = nums.size();
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int sum = nums[i] + nums[j];
if (sum < target) {
result++;
}
}
}
return result;
}
};
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!