Leetcode找三个数字的和满足xx条件的题目总结15➕16➕259
双指针最基础的题目是一个区间里找两个数字的和等于Target。首先将区间从小到大排序。接下来只要一个le指针,一个ri指针,分别从区间左右边界往中间推进即可。复杂度是排序的nlogn。
下面几道题都是一个区间里找三个数字的和满足xx条件的。这个题目的做法首先还是先排序。之后先固定一个数字,然后在该数字的右侧区间内重新使用之前找两个数字的和的算法。 即i 从0到n-1,j 从i+1开始增加,k 从n-1开始减小直到j和k碰撞。这样的复杂度是n平方。外层i从0到n-1是O(n),内层从i+1到n-1也是O(n)。
15
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
if(nums.empty()){return vector<vector<int>>();}
sort(nums.begin(),nums.end());
vector<vector<int>> res;
int n=nums.size();
for(int i=;i<n;++i){
if(i> and nums[i-]==nums[i]){continue;}
int j=i+,k=n-;
while(j<k){
while(j<k and j>i+ and nums[j]==nums[j-]){
++j;
}
while(j<k and k<n- and nums[k]==nums[k+]){
--k;
}
if(j>=k){break;}
if(nums[i]+nums[j]+nums[k]>){
--k;
}
else if(nums[i]+nums[j]+nums[k]<){
++j;
}
else{
res.push_back({nums[i],nums[j],nums[k]});
++j,--k;
}
}
}
return res;
}
};
16
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int n=nums.size();
if(n<){return ;}
sort(nums.begin(),nums.end());
int min_distance=INT_MAX,temp,sum=;
for(int i=;i<n;++i){
if(i> and nums[i]==nums[i-]){continue;}
int j=i+,k=n-;
while(j<k){
if((temp=nums[i]+nums[j]+nums[k]-target)>){
if(temp<min_distance){
min_distance=temp;
sum=temp+target;
}
--k;
while(j<k and nums[k]==nums[k+]){
--k;
}
}
else if(temp<){
if(-temp<min_distance){
min_distance=-temp;
sum=temp+target;
}
++j;
while(j<k and nums[j-]==nums[j]){
++j;
}
}
else{
return target;
}
}
}
return sum;
}
};
259
class Solution {
public:
int threeSumSmaller(vector<int>& nums, int target) {
int N=nums.size(),res=;
sort(nums.begin(),nums.end());
for(int i=;i<N-;++i){
int j=i+,k=N-;
while(j<k){
if(nums[i]+nums[j]+nums[k]<target){
res+=k-j;
j++;
}
else{
k--;
}
}
}
return res;
}
};
Leetcode找三个数字的和满足xx条件的题目总结15➕16➕259的更多相关文章
- [LeetCode] Maximum Product of Three Numbers 三个数字的最大乘积
Given an integer array, find three numbers whose product is maximum and output the maximum product. ...
- LeetCode:三个数的最大乘积【628】
LeetCode:三个数的最大乘积[628] 题目描述 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1 ...
- LeetCode:三数之和【15】
LeetCode:三数之和[15] 题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的 ...
- 验证abc三列数字符合我的小弟要求
需求好像是: 1.第一列数据有重复的找出来,并且找出它的重复位置 2.第三列根据第一列得出的位置,取出相应位置的数据进行相加 3.相加的结果 是否等同于第二列的对应位置数据 <!DOCTYPE ...
- leetcode第三题
leetcode第三题: 题目: 给定一个字符串,找出不含有重复字符的最长子串的长度. 源码(使用java语言): class Solution { public int lengthOfLonges ...
- LeetCode 628. 三个数的最大乘积
题目描述 LeetCode 628. 三个数的最大乘积 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例1 输入: [1,2,3] 输出: 6 示例2 输入: [1,2,3 ...
- js验证连续两位数字递增或递减和连续三位数字相同
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- JS基础,课堂作业,三个数字排序
三个数字大小排序 <script> var a = parseInt(prompt("请输入第一个整数:")); var b = parseInt(prompt(&qu ...
- CF D - Beautiful Graph(dfs 染色问题吧)给你一个图,每个节点可以赋值1,2,3三种数字,相邻的节点的和必须是奇数,问有多少中方法。
题意: 给你一个图,每个节点可以赋值1,2,3三种数字,相邻的节点的和必须是奇数,问有多少中方法. 分析: 很容易就可以发现如果这个图中是有奇数的环的话,那这是肯定不行的 ,否则这个环的贡献是为2^s ...
随机推荐
- Newtonsoft--自定义格式化日期
public string ToJson(object obj, string timeFormat) { try { IsoDateTimeConverter timeConverter = new ...
- adworld easy_RSA | RSA算法
题目描述: 解答出来了上一个题目的你现在可是春风得意,你们走向了下一个题目所处的地方 你一看这个题目傻眼了,这明明是一个数学题啊!!!可是你的数学并不好.扭头看向小鱼,小鱼哈哈一笑 ,让你在学校里面不 ...
- BSP与HAL关系(转)
板级支持包(BSP)(Board Support Package)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件 ...
- Java虚拟内存(栈、堆)
一.java虚拟的内存可以分为几种 1. 第一种 栈(stack) 栈的特点 1.1 栈描述的是方法执行的内存模型,每个方法都被调用都会创建一个栈(存储局部变量.操作数. 方法出口等) 1.2 JVM ...
- Python 用户输入&while循环 初学者笔记
input() 获取用户输入(获取的都是字符串哦) //函数input()让程序停止运行,等待用户输入一些文本. //不同于C的是可在input中添加用户提示,而scanf不具备这一特性. //提示超 ...
- C#实例之简单聊天室(状态管理)
前言 状态管理是在同一页或不同页的多个请求发生时,维护状态和页信息的过程.因为Web应用程序的通信协议使用了无状态的HTTP协议,所以当客户端请求页面时,ASP.NET服务器端都会重新生 ...
- Spring Boot源码(一):去除web.xml
访问https://spring.io/ spring boot中: public class MyWebApplicationInitializer implements WebApplicatio ...
- python之路(内存,小数据池,编码等)
代码块: python真正的代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 但是,在python终端交互模式下,每一条代码都是一个代码块 python在同一个代码块中的变量,初始化对象 ...
- Burp Suite Professional 针对APP抓包篡改数据提交【安全】
Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应的HTTP 消息 ...
- 134.cookie、session的工作机制
cookie和session (1)cookie:在网站中,http请求时无状态的,也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求的是哪个用户(在中国我们因为IP ...