日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LintCode: 3 Sum

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LintCode: 3 Sum 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++

把3個數求和,轉變為2個數求和

1. 把數組排序

2. 注意過濾重復值

3. 從前到后遍歷,游標i

4. 從后邊數中找start + end = -arr[i]的2 sum

5. start + end < -arr[i], start++

6. start + end > -arr[i], end--

7. start + end = -arr[i], insert <i, start, end> into result vecotr

1 class Solution { 2 public: 3 /** 4 * @param numbers : Give an array numbers of n integer 5 * @return : Find all unique triplets in the array which gives the sum of zero. 6 */ 7 vector<vector<int> > threeSum(vector<int> &nums) { 8 // write your code here 9 vector<vector<int> > result; 10 11 sort(nums.begin(), nums.end()); 12 for (int i = 0; i < nums.size(); i++) { 13 if (i > 0 && nums[i] == nums[i - 1]) { 14 continue; 15 } 16 // two sum; 17 int start = i + 1, end = nums.size() - 1; 18 int target = -nums[i]; 19 while (start < end) { 20 if (start > i + 1 && nums[start - 1] == nums[start]) { 21 start++; 22 continue; 23 } 24 if (nums[start] + nums[end] < target) { 25 start++; 26 } else if (nums[start] + nums[end] > target) { 27 end--; 28 } else { 29 vector<int> triple; 30 triple.push_back(nums[i]); 31 triple.push_back(nums[start]); 32 triple.push_back(nums[end]); 33 result.push_back(triple); 34 start++; 35 } 36 } 37 } 38 39 return result; 40 } 41 };

?

本文轉自ZH奶酪博客園博客,原文鏈接:http://www.cnblogs.com/CheeseZH/p/5009646.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的LintCode: 3 Sum的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。