博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode解题笔记-3sum
阅读量:4629 次
发布时间:2019-06-09

本文共 845 字,大约阅读时间需要 2 分钟。

题目要求:

给出一个给定的数组,找出所有三个数之和等于0的集合,并返回所有的结果集

解题思路:

解题之前先对数组进行排序

1. 确定了一个nums[i]之后通过高位high以及低位low左右close

2.注意要判断nums[i]是否等于nums[i+1]如果等于直接跳过

3.如果高位和低位相加大于sum值则high下移

4.如果高位和低位相加小于sum值则low上调

5.相等则将nums[i],nums[low],nums[high]加入结果集

代码如下:

public static List<List<Integer>> threeSum(int[] nums){

Arrays.sort(nums);
List<List<Integer>> result = new ArrayList<List<Integer>>();
for (int i =0; i <nums.length-2;i++){
int low = i+1, high = nums.length-1, sum = 0- nums[i];
while(low< high){
if(i==0||nums[i]!=nums[i-1]){
if(nums[low]+nums[high]==sum){
result.add(Arrays.asList( nums[i],nums[low],nums[high]) );
while(low<high&&nums[low]==nums[low+1]) low++;
while(low<high&&nums[high]==nums[high-1]) high--;
low++;
high--;
}else if(nums[low]+nums[high]<sum){
low++;
}else{
high--;
}
}
}
}
return result;
}

转载于:https://www.cnblogs.com/whaochen/p/4717492.html

你可能感兴趣的文章
[置顶] 单例模式lua实现
查看>>
如何在VMware虚拟机上安装Linux操作系统(Ubuntu)
查看>>
(2)入门指南——(3)为什么jquery工作的很好(Why jQuery works well)
查看>>
hdu - 4707 - Pet
查看>>
RobotFramework下的http接口自动化Set Request Body 关键字的使用
查看>>
Kindeditor学习中的那些坑
查看>>
Servlet
查看>>
一篇价值百万的文章:我为什么在22岁辞去年薪150万的工作?
查看>>
信息安全系统设计基础期末总结
查看>>
leetcode 203 Remove Linked List Elements
查看>>
TCP/IP 笔记 1.3 IP:网际协议
查看>>
HDU 1061 Rightmost Digit
查看>>
八种简易健康减肥瘦身法
查看>>
win7旗舰版下配置IIS服务器
查看>>
web开发基础
查看>>
java——逻辑运算符与(&和&&)或(|和||)
查看>>
iPhone App开发导航条(Navigation Bar)素材PSD下载
查看>>
jQuery中的事件机制深入浅出
查看>>
当前上下文中不存在viewbag
查看>>
Laravel 上使用 phpexcel的两种方式
查看>>