018_四数之和
2019-03-10 11:48:16来源:博客园 阅读 ()
1 //使用三数之和中的双指针的思想,固定外围两个数 2 vector<vector<int>> fourSum(vector<int>& nums, int target) { 3 sort(nums.begin(), nums.end()); 4 vector<vector<int>>Res; 5 if (nums.size() < 4)return Res; 6 for (int d = nums.size() - 1; d >= 3;) { 7 for (int a = 0; a < d;) { 8 for (int b = a + 1, c = d - 1; b < c;) { 9 if ((nums[a] + nums[b] + nums[c] + nums[d]) < target)//小了,要大点 10 ++b; 11 else if ((nums[a] + nums[b] + nums[c] + nums[d]) > target)//太大了,要小点 12 --c; 13 else {//刚好为0 14 vector<int>v = { nums[a],nums[b] ,nums[c], nums[d] }; 15 Res.push_back(v); 16 17 do 18 { 19 ++b; 20 } while (b < c && nums[b] == nums[b - 1]);//去除重复数字 21 22 do 23 { 24 --c; 25 } while (c > b && nums[c] == nums[c + 1]);//去除重复数字 26 27 } 28 } 29 do 30 { 31 ++a; 32 } while (a < d && nums[a] == nums[a - 1]);//去除重复数字 33 } 34 35 do 36 { 37 --d; 38 } while (d >= 3 && nums[d] == nums[d + 1]);//去除重复数字 39 } 40 41 return Res; 42 43 }
原文链接:https://www.cnblogs.com/zzw1024/p/10489826.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C++_调用约束
- leetcode第一题两数之和击败了 98.11% 的用户的答案(C++) 2019-11-15
- Noip2018Day1T3 赛道修建 2019-09-30
- IEEE浮点表示 (原发布 csdn 2018-10-14 10:29:33) 2019-09-08
- 201803-2 碰撞的小球 2019-09-08
- P1018 乘积最大(DP) 2019-08-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash