Leetcode 259. 3Sum Smaller (Medium) (cpp)
Tag: Array, Two Pointers
Difficulty: Medium
这是一道locked题目,给评论个“赞”呗?
/*
259. 3Sum Smaller (Medium)
Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 <= i < j < k < n that satisfy the condition nums[i] + nums[j] + nums[k] < target.
For example, given nums = [-2, 0, 1, 3], and target = 2.
Return 2. Because there are two triplets which sums are less than 2:
[-2, 0, 1]
[-2, 0, 3]
Follow up:
Could you solve it in O(n2) runtime?
*/
class Solution {
public:
int threeSumSmaller(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
if (nums.size() < 3) {
return 0;
}
int res = 0;
for (int i = 0; i < nums.size() - 2; i++) {
if (nums[i] + nums[i + 1] + nums[i + 2] >= target) {
return res;
}
int j = i + 1, k = nums.size() - 1;
while (j < k) {
if (nums[i] + nums[j] + nums[k] < target) {
res += k - j;
j++;
} else {
k--;
}
}
}
return res;
}
};
本文介绍LeetCode上的259题“3Sum Smaller”,难度为中等。文章详细阐述了如何通过两指针法求解给定数组中三个数之和小于目标值的组合数量,并提供了一个O(n^2)的高效解决方案。
1110

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



