zoukankan      html  css  js  c++  java
  • leetcode 15. 3Sum 双指针

    题目链接

    给n个数, 找出三个数相加结果为0的所有的组, 不可重复。

    用双指针的思想,O(n^2)暴力的找, 注意判重复。

     1 class Solution {
     2 public:
     3     vector<vector<int>> threeSum(vector<int>& nums) {
     4         int sz = nums.size();
     5         vector <vector<int> > ans;
     6         vector <int> tmp;
     7         sort(nums.begin(), nums.end());
     8         for(int i = 0; i<sz; i++) {
     9             if(i>0 && nums[i] == nums[i-1])
    10                 continue;
    11             int l = i+1, r = sz-1;
    12             while(l<r) {
    13                 int sum = nums[i]+nums[l]+nums[r];
    14                 if(sum < 0) {
    15                     l++;
    16                 } else if (sum>0) {
    17                     r--;
    18                 } else {
    19                     tmp.push_back(nums[i]);
    20                     tmp.push_back(nums[l++]);
    21                     tmp.push_back(nums[r--]);
    22                     sort(tmp.begin(), tmp.end());
    23                     ans.push_back(tmp);
    24                     tmp.clear();
    25                     while(l<r&&nums[l-1]==nums[l])
    26                         l++;
    27                     while(r>l&&nums[r] == nums[r+1])
    28                         r--;
    29                 }
    30             }
    31         }
    32         return ans;
    33     }
    34 };
  • 相关阅读:
    《道德经》全文
    mysql 服务启动后停止
    安装docker-compose
    金刚般若波罗蜜经
    elasticsearch reIndex
    【基础篇】1.vim复制黏贴跳转
    新事物如何持续性发展
    舒服的状态
    教父
    关于拖延
  • 原文地址:https://www.cnblogs.com/yohaha/p/5121813.html
Copyright © 2011-2022 走看看