• 15. 3Sum C++


    参考资料:

    https://leetcode.com/problems/3sum/discuss/7402/Share-my-AC-C%2B%2B-solution-around-50ms-O(N*N)-with-explanation-and-comments

    https://www.cnblogs.com/grandyang/p/4481576.html

    class Solution {
    public:
        vector<vector<int>> threeSum(vector<int>& nums) {
            vector<vector<int> > res;
    
            std::sort(nums.begin(), nums.end());
    
            for (int i = 0; i < nums.size(); i++) {
    
                int target = -nums[i];
                int front = i + 1;
                int back = nums.size() - 1;
    
                while (front < back) {
    
                    int sum = nums[front] + nums[back];
    
                    // Finding answer which start from numsber nums[i]
                    if (sum < target)
                        front++;
    
                    else if (sum > target)
                        back--;
    
                    else {
                        vector<int> triplet(3, 0);
                        triplet[0] = nums[i];
                        triplet[1] = nums[front];
                        triplet[2] = nums[back];
                        res.push_back(triplet);
    
                        // Processing duplicates of numsber 2
                        // Rolling the front pointer to the next different numsber forwards
                        while (front < back && nums[front] == triplet[1]) front++;
    
                        // Processing duplicates of numsber 3
                        // Rolling the back pointer to the next different numsber backwards
                        while (front < back && nums[back] == triplet[2]) back--;
                    }
    
                }
    
                // Processing duplicates of numsber 1
                while (i + 1 < nums.size() && nums[i + 1] == nums[i]) 
                    i++;
    
            }
    
            return res;
        }
    };
  • 相关阅读:
    UITableView学习笔记
    IOS基础之设置APP的名字、设置图标、添加等待加载时的图片
    UIScrollView,UIPageControl
    UIPickerView基本用法
    最大公约数和最小公倍数
    快速幂、快速乘
    素数筛
    最小生成树
    BZOJ1070 [SCOI2007]修车
    BZOJ1109 [POI2007]堆积木Klo
  • 原文地址:https://www.cnblogs.com/tornado549/p/9966923.html
Copyright © 2020-2023  润新知