题目描述:
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.
Example:
Input: nums = [-2,0,1,3], and target = 2
Output: 2
Explanation: 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(n^2) runtime?
class Solution {
public:
int threeSumSmaller(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
int result=0;
int n=nums.size();
for(int i=0;i<n-2;i++)
{
int j=i+1;
int k=n-1;
while(j<k)
{
if(nums[i]+nums[j]+nums[k]<target)
{
result+=k-j;
j++;
}
else k--;
}
}
return result;
}
};