leetcode18 四数之和 双指针
题外话:
这道题让我想起了
挑战程序设计竞赛有一个抽签问题,类似的a+b+c+d=target,可以重复使用一个数。
a+b+c+d=target转化为 a+b=target-c-d。 如果只是判断是否存在,那么可以预处理,得到所有c+d的值,然后binary_search (target-a-b)
处理方法
对于一个共有n个数的数组,准备一个数组int kk
kk[c*n+d]=k[c]+k[d]。
复杂度O(n^2log(n))

然后这道题:
就和前两个题差不多,先固定两个数,然后双指针法
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int>>ret;
if(nums.empty())
return ret;
int len=nums.size();
if(len<4)
return ret;
sort(nums.begin(),nums.end());
for (int i = 0; i < len - 3; i++) {
if (i > 0 && nums[i] == nums[i - 1])
continue;
for(int j=i+1;j<len-2;j++){
if(nums[j]==nums[j-1]&&(j>i+1))
continue;
int l = j + 1;
int r = len - 1;
while (l < r) { //多组
int s = nums[i] + nums[l] + nums[r]+nums[j];
if (s > target)
r--;
else if (s < target)
l++;
else {
ret.push_back({nums[i], nums[j],nums[l], nums[r]});
while (l < r && nums[l] == nums[++l]);
while (l < r && nums[r] == nums[--r]);
}
}
}
}
return ret;
}
};
leetcode18 四数之和 双指针的更多相关文章
- LeetCode18. 四数之和
LeetCode18. 四数之和 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值 ...
- Leetcode12. 整数转罗马数字Leetcode18. 四数之和
> 简洁易懂讲清原理,讲不清你来打我~ 输入整数,输出对应的罗马字符串
Ubuntu18.04下编译libx264.libx265.libfdk_aac和ffmpeg 一.编译x264库 二.编译fdk-aac库 三.编译x265库 四.编译FFmpeg源码 五.设置环境 ...
- java 不利用第三个变量的情况下将值互换
package com.zcj.eg001; public class VarChange { public static void main(String[] args) { int a = 10; ...
- 什么是Etcd,如何运维Etcd ?
介绍 ETCD 是一个分布式.可靠的 key-value 存储的分布式系统,用于存储分布式系统中的关键数据:当然,它不仅仅用于存储,还提供配置共享及服务发现:基于Go语言实现. ETCD的特点 简单: ...
- 让源码包apache服务被服务管理命令识别
在默认情况下,源码包服务是不能被系统的服务管理命令所识别和管理的,但是如果我们做一些设定,则也是可以让源码包服务被系统的服务管理命令所识别和管理的.不过笔者并不推荐大家这样做, 因为这会让本来区别很明 ...
- GC 卡顿 优化 三色标记优势
小结: 1. 三色标记的一个明显好处是能够让用户程序和 mark 并发的进行 Go GC 卡顿由秒级降到毫秒级以下:到底做了哪些优化? https://mp.weixin.qq.com/s/2BMGG ...
- windows命令行关闭IE代理
打开:reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnab ...
- loj10005数列极差
题目描述 佳佳的老师在黑板上写了一个由 n个正整数组成的数列,要求佳佳进行如下操作:每次擦去其中的两个数 a 和 b,然后在数列中加入一个数 a*b+1,如此下去直至黑板上剩下一个数为止,在所有按这 ...
- Windows搭建TestLink环境
环境准备: 搭建php5.4.39+apache2.2+mysq5.5.28l环境 (可参考http://www.cnblogs.com/yangxia-test/p/4414161.html) (注 ...
- 十:SpringBoot-配置AOP切面编程,解决日志记录业务
SpringBoot-配置AOP切面编程,解决日志记录业务 1.AOP切面编程 1.1 AOP编程特点 1.2 AOP中术语和图解 2.SpringBoot整合AOP 2.1 核心依赖 2.2 编写日 ...