4Sum 4个数字的和为目标数
2015-04-01 11:24
190 查看
4Sum
Given an array S of n integers, are there elements a, b, c, and d in S suchthat a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.
Note:
Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie, a ≤ b ≤ c ≤ d)
The solution set must not contain duplicate quadruplets.
For example, given array S = {1 0 -1 0 -2 2}, and target = 0. A solution set is: (-1, 0, 0, 1) (-2, -1, 1, 2) (-2, 0, 0, 2)
class Solution { public: vector<vector<int> > fourSum(vector<int> &num, int target) { vector<vector<int>> res; int i,j,left,right,len,sum; len=num.size(); sort(num.begin(),num.end()); for(i=0;i<len;i++) { if(i>0&&num[i]==num[i-1]) { continue; } for(j=i+1;j<len;j++) { if(j>i+1&&num[j]==num[j-1]) { continue; } left=j+1; right=len-1; while(left<right) { if(left>j+1&&num[left]==num[left-1]) { left++; continue; } if(right<len-1&&num[right]==num[right+1]) { right--; continue; } sum=num[i]+num[j]+num[left]+num[right]; if(sum<target) { left++; } else if(sum>target) { right--; } else{ vector<int> tmp; tmp.push_back(num[i]); tmp.push_back(num[j]); tmp.push_back(num[left]); tmp.push_back(num[right]); res.push_back(tmp); left++; right--; } } } } return res; } };
相关文章推荐
- C语言基础实例1 — 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 判断二叉树,是否存在一条根到叶子的路径和,与一个指定的目标数字相等
- 猜4个不同数字的游戏
- 查找最小的k个元素 输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4
- 调用函数:4个数字中求最大数
- 数字图像处理--显著目标检测思路
- 输入4个数字,显示它们的乘积
- 问题十七:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- XZ_iOS之一串字符串每隔4个数字或者字符串加空格
- 从数组中随机取出4个不重复的数字
- 给定一个整数数组,两个数字的返回索引将它们加到一个特定的目标中。 您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。
- 正则匹配:Email 密码强度 身份证 手机号 日期 数字每4个字空一格等
- JS --- 动态显示目标数字(排名,金额等数字动态化显示可适用)
- 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- js 填写银行卡号时,每4个数字用空格隔开
- 原始数字魔方(3*3的二维矩阵) 旋转后 得到目标数字魔方(3*3的二维矩阵)