首页 > 编程语言 > 详细

【数组】15. 三数之和

时间:2020-05-04 19:36:17      阅读:46      评论:0      收藏:0      [点我收藏+]

题目:

技术分享图片

 

 

解答:

 1 class Solution {
 2 public:
 3     vector<vector<int>> threeSum(vector<int>& nums) 
 4     {
 5         sort(nums.begin(), nums.end());
 6 
 7         int N = nums.size();
 8         vector<vector<int> > res;
 9 
10         for (int i = 0; i < N - 2; ++i) 
11         {
12             if (nums[i] > 0) 
13             {
14                 break;
15             }
16             if (i > 0 && nums[i] == nums[i - 1]) 
17             {
18                 continue;
19             }
20             int l = i + 1;
21             int r = N - 1;
22             while (l < r) 
23             {
24                 int s = nums[i] + nums[l] + nums[r];
25                 if (s > 0) 
26                 {
27                     --r;
28                 } 
29                 else if (s < 0) 
30                 {
31                     ++l;
32                 } 
33                 else 
34                 {
35                     res.push_back({nums[i], nums[l], nums[r]});
36                     while (l < r && nums[l] == nums[++l]);
37                     while (l < r && nums[r] == nums[--r]);
38                 }
39             }
40         }
41         return res;
42     }
43 };

 

【数组】15. 三数之和

原文:https://www.cnblogs.com/ocpc/p/12827782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!