码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 259. 3Sum Smaller 三数之和较小值

时间:2018-08-25 11:33:57      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:isp   turn   none   question   ati   dex   tar   integer   audio   

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?

解法1: 暴力brute force, 找出所有组合的和,然后找出小于target的组合,O(n^3)

解法2: 双指针, O(n^2)

class Solution {
public:
    int threeSumSmaller(vector<int>& nums, int target) {
        if (nums.size() < 3) return 0;
        int res = 0, n = nums.size();
        sort(nums.begin(), nums.end());
        for (int i = 0; i < n - 2; ++i) {
            int left = i + 1, right = n - 1;
            while (left < right) {
                if (nums[i] + nums[left] + nums[right] < target) {
                    res += right - left;
                    ++left;
                } else {
                    --right;
                }
            }
        }
        return res;
    }
};

 

 

类似题目:

[LeetCode] 15. 3Sum 三数之和

[LeetCode] 16. 3Sum Closest 最近三数之和

 

[LeetCode] 259. 3Sum Smaller 三数之和较小值

标签:isp   turn   none   question   ati   dex   tar   integer   audio   

原文地址:https://www.cnblogs.com/lightwindy/p/9532678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!