leetcode@ [18]4Sum
2015-10-08 21:09
357 查看
struct quadruplet{ int a,b,c,d; quadruplet() {} quadruplet(int aa,int bb,int cc,int dd){ this->a=aa; this->b=bb; this->c=cc; this->d=dd; } bool operator<(const quadruplet& t)const{ if((a-t.a<0)||(a==t.a&&b<t.b)||(a==t.a&&b==t.b&&c<t.c)||(a==t.a&&b==t.b&&c==t.c&&d<t.d)) return true; return false; } }; class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); vector<vector<int> > ans; ans.clear(); if(nums.size()<=3) return ans; int cntAns=0; vector<int> tmp(4); tmp.clear(); set<quadruplet> st; st.clear(); int left,right,sum; for(int i=0;i<=nums.size()-4;i++){ for(int j=i+1;j<=nums.size()-3;j++){ left=j+1; right=nums.size()-1; while(left<right){ sum=nums[i]+nums[j]+nums[left]+nums[right]; if(sum==target){ tmp.push_back(nums[i]); tmp.push_back(nums[j]); tmp.push_back(nums[left]); tmp.push_back(nums[right]); sort(tmp.begin(),tmp.end()); quadruplet quad=quadruplet(tmp[0],tmp[1],tmp[2],tmp[3]); if(!st.count(quad)){ st.insert(quad); ans.resize(++cntAns); ans[cntAns-1]=tmp; } tmp.clear(); right--; left++; } else if(sum>target) right--; else left++; } } } return ans; } };
相关文章推荐
- Android开发中versionCode和versionName解析
- ListView全行选择
- Cocos2dx控件 Text和TextField
- css3学习之用户界面
- 反省一万次——我为什么这么蠢啊。。。。。。
- 使用Andnroid的post请求
- HDU 1423 裸LCIS
- xeCJK时的警告:xeCJK warning: "CJKfamily-Unknown"
- ArrayList/LinkedList/Vector
- 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境
- hihoCoder #1162 : 骨牌覆盖问题·三
- 剑指offer—孩子们的游戏(圆圈中最后剩下的数)
- markdown使用LaTeX语法编写数学公式
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- [置顶] 【实验-视频过程】闪回数据库Flashback database
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- iOS项目上传到AppStore步骤流程
- 值得关注的syncthing
- jquery组织结构图插件 (基于jit-yc 做可拖动、自适应伸缩的orgchart)
- 理解多线程中的join方法