leetcode 15 3sum & leetcode 18 4sum
3sum:
1 class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>>result;
vector<vector<int>>::iterator iter;
vector<int>Middle;
int length=nums.size()-;
sort(nums.begin(),nums.end());
for(int i=;i<length-;i++) {
int st=i+,en=length;
if(i>&&nums[i]==nums[i-])continue;
while(st<en) {
while(st>i+&&nums[st-]==nums[st]) {
st++;
continue;
}
while(en<length&&nums[en+]==nums[en]) {
en--;
continue;
}
if(st>=en)break;
int temp=nums[st]+nums[en];
if(temp+nums[i]==) {
Middle.push_back(nums[i]);
Middle.push_back(nums[st]);
Middle.push_back(nums[en]);
result.push_back(Middle);
Middle.clear();
st++;
}
else
if(temp+nums[i]<)
st++;
else
if(temp+nums[i]>)
en--;
}
}
return result;
}
};
4sum:
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int>> result;
vector<int>MiddResult;
if(nums.size()<)return result;
sort(nums.begin(),nums.end());
int length=nums.size();
for(int i=;i<length-;i++) {
if(i>&&nums[i]==nums[i-])continue;
for(int j=i+;j<length-;j++) {
if(j>i+&&nums[j]==nums[j-])continue;
int st=j+,en=length-;
while(st<en) {
if(st>j+&&nums[st-]==nums[st]) {
st++;
continue;
}
if(en<length-&&nums[en+]==nums[en]) {
en--;
continue;
}
int temp=nums[i]+nums[j]+nums[st]+nums[en];
if(temp==target) {
MiddResult.push_back(nums[i]);
MiddResult.push_back(nums[j]);
MiddResult.push_back(nums[st]);
MiddResult.push_back(nums[en]);
result.push_back( MiddResult);
st++;
MiddResult.clear();
}
else
if(temp<target)
st++;
else en--;
}
}
}
return result;
}
};
leetcode 15 3sum & leetcode 18 4sum的更多相关文章
- 查找表,Two Sum,15. 3Sum,18. 4Sum,16 3Sum Closest,149 Max points on line
Two Sum: 解法一:排序后使用双索引对撞:O(nlogn)+O(n) = O(nlogn) , 但是返回的是排序前的指针. 解法二:查找表.将所有元素放入查找表, 之后对于每一个元素a,查找 t ...
- LeetCode 15 3Sum [sort] <c++>
LeetCode 15 3Sum [sort] <c++> 给出一个一维数组,找出其中所有和为零的三元组(元素集相同的视作同一个三元组)的集合. C++ 先自己写了一发,虽然过了,但跑了3 ...
- LeetCode 15. 3Sum 16. 3Sum Closest 18. 4Sum
n数求和,固定n-2个数,最后两个数在连续区间内一左一右根据当前求和与目标值比较移动,如果sum<target,移动较小数,否则,移动较大数 重复数处理: 使i为左至右第一个不重复数:while ...
- leetcode 15. 3Sum 二维vector
传送门 15. 3Sum My Submissions Question Total Accepted: 108534 Total Submissions: 584814 Difficulty: Me ...
- [LeetCode] 15. 3Sum 三数之和
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- LeetCode——15. 3Sum
一.题目链接:https://leetcode.com/problems/3sum/ 二.题目大意: 3和问题是一个比较经典的问题,它可以看做是由2和问题(见http://www.cnblogs.co ...
- LeetCode 15 3Sum(3个数求和为0的组合)
题目链接 https://leetcode.com/problems/3sum/?tab=Description Problem: 给定整数集合,找到所有满足a+b+c=0的元素组合,要求该组合不 ...
- LeetCode 15. 3Sum(三数之和)
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- leetCode 15. 3Sum (3数之和) 解题思路和方法
3Sum Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find ...
随机推荐
- Java源码——HashMap的源码分析及原理学习记录
学习HashMap时,需要带着这几个问题去,会有很大的收获: 一.什么是哈希表 二.HashMap实现原理 三.为何HashMap的数组长度一定是2的次幂? 四.重写equals方法需同时重写hash ...
- C# StreamReader对象
1.读取文件 输入流用于从外部源读取数据,在很多情况下,数据源可以是磁盘上的文件或网络的某些位置,任何可能发送数据的位置都可以是数据源,比如网络应用程序,web服务,甚至是控制台.StreamRead ...
- Vimim是VI中最好的输入法
Vimim是VI中最好的输入法 由于在VI中,normal和insert模式的存在,如果在insert模式下正在输入中文,在通过ESC键返回到normal模式后,系统的中文输入法会与VI的命令相冲突, ...
- Linux-WebServer安装和配置
Apache 基本操作 解释 命令 安装 yum install httpd 启动 service httpd start 停止 service httpd stop 启动完成后 查看进程是否存在:p ...
- 静态属性property的本质和应用
一.本质 静态属性property本质就是实现了get,set,delete三种方法 class Foo: @property def AAA(self): print('get的时候运行我啊') @ ...
- C++构造函数使用的多种方法
// classes and uniform initialization #include <iostream> using namespace std; class Circle { ...
- Fibonacci again and again HDU - 1848
任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的: F(1)=1; F(2)=2; F(n)=F(n-1)+F(n-2)(n>=3); 所以,1, ...
- 子窗体与父窗体调用对方js方法
有时候为了减少一个页面内的代码量,会将部分内容放到子窗体中,如后台管理中用iframe来进行管理 <div> <iframe id="dviframe" src= ...
- 11,scrapy框架持久化存储
今日总结 基于终端指令的持久化存储 基于管道的持久化存储 今日详情 1.基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的 ...
- cf965c Greedy Arkady
呸,大傻逼题,我更傻逼ref #include <iostream> using namespace std; typedef long long ll; ll n, k, m, d, a ...