LeetCode 15. 3Sum
来源:互联网 发布:淘宝违反价格法 编辑:程序博客网 时间:2024/06/05 17:44
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4],A solution set is:[ [-1, 0, 1], [-1, -1, 2]]
Subscribe to see which companies asked this question.
LeetCode经典问题:*sum问题
暴力求解是n^*的复杂度,不可取。
整体思路是先排序(nlogn),然后使用三个指针,其中一个a从头部向尾部移动,另外两个b,c在a和尾部之间做搜索,可以通过比较值或者利用set的数据结构两种方式达到去重的目的。
import java.util.*;public class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if(nums.length<3){ return res; } Arrays.sort(nums); int len = nums.length; for(int i=0;i<len-2;i++){ if(nums[i]>0)break; if(i>0&&nums[i]==nums[i-1])continue; int j=i+1,k=len-1; while(j<k){ if(nums[i]+nums[j]+nums[k]==0){ List<Integer>list = new ArrayList<Integer>(); list.add(nums[i]); list.add(nums[j]); list.add(nums[k]); res.add(list); while(j<k&&nums[j]==nums[j+1])j++; while(j<k&&nums[k]==nums[k-1])k--; j++; k--; } else if(nums[i]+nums[j]+nums[k]>0){ k--; } else j++; } } return res; }}
0 0
- LeetCode 15. 3Sum
- LeetCode --- 15. 3Sum
- [Leetcode] 15. 3Sum
- 【LeetCode】15. 3Sum
- 【leetcode】15. 3sum
- 【leetcode】15. 3Sum
- [leetcode] 15. 3Sum
- leetcode 15. 3Sum
- leetcode 15. 3Sum
- leetcode 15. 3Sum
- Leetcode 15. 3Sum
- LeetCode - 15. 3Sum
- [LeetCode]15. 3Sum
- Leetcode 15. 3Sum
- leetcode 15. 3Sum
- leetcode 15. 3Sum
- 【leetcode】15. 3Sum
- Leetcode - 15. 3Sum
- [Azure]ARM模式下没有公网IP地址的虚拟机如何与外部通信
- 操作系统实验六之多线程矩阵乘法
- Shell脚本编程的常识
- jQuery过滤选择器详解
- Minimum Inversion Number HDU
- LeetCode 15. 3Sum
- springmvc常用注解标签详解
- Solr集群搭建,zookeeper集群搭建,Solr分片管理,Solr集群下的DataImport,分词配置。
- PyCharm用法的相关介绍
- BNU 49098 神奇的身高
- BNU 49097 Araleii & Bill的冠名权争夺战之登顶校赛
- BNU 49102
- caffe测试训练好的caffemodel和记录每层的运行时间
- 第32课:彻底解密Spark 2.1.X中Shuffle 下Task视角内存分配管理