15. 3Sum

来源:互联网 发布:电信机顶盒网络连接 编辑:程序博客网 时间:2024/06/02 05:10

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:

  • Elements in a triplet (a,b,c) must be in non-descending order. (ie,abc)
  • The solution set must not contain duplicate triplets.

public class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);//sort进行排序List<List<Integer>> list = new ArrayList<List<Integer>>();for(int i = 0; i < nums.length-2; i++) {if(i > 0 && (nums[i] == nums[i-1]))continue;//避免重复for(int j = i+1, k = nums.length-1; j < k;) {int sum = nums[i] + nums[j] + nums[k];if(sum == 0) {list.add(Arrays.asList(nums[i],nums[j],nums[k]));j++;k--;while((j < k) && (nums[j] == nums[j-1]))j++;//避免重复while((j < k) && (nums[k] == nums[k+1]))k--;//避免重复}else if (sum > 0)k--;//结果大于0,大数往里缩elsej++;//结果小于0,小数往里缩}}return list;}}
//大致思路就是先排序,然后第一个数从0到num.length-2遍历,后面俩数初始放在最前面和最后面,然后慢慢的向里面靠近。此算法打败了92.68%的人。

//发现很多算法题都是两边入手往里,或者找到中间值向外扩。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 汽车ems认证失败怎么办 工行介质失败是怎么办 校园网翻不了墙怎么办 xp网站证书错误怎么办 wifi一直掉线怎么办 太累了头晕怎么办 大专证没有认证怎么办 学生信息怎么办忘了 中专对口大专考不上怎么办 学历认证待校对怎么办 毕业证上没照片怎么办 怎么办学历学位认证证明 教育部学历学位认证怎么办 兵役登记被注册怎么办 学信网手机号忘了怎么办 注销手机号了学信网怎么办 学信网手机换了怎么办 学籍不在籍结业怎么办 电教馆的幼师证怎么办 中考不够建档线怎么办 医保漏交一年怎么办 南通图书馆怎么办饭卡 工商银行卡坏了怎么办 北京一卡通丢了怎么办 甲状腺右叶结节怎么办 ca证书掉了怎么办 地税ca丢了怎么办 南京乘车卡丢失怎么办 老干妈瓶盖打不开怎么办 金陵图书馆书丢失怎么办 幼师资格证丢了怎么办 双证毕业没有怎么办 幼师面试没特长怎么办 资格证到6年没换怎么办 中央巡视组走了怎么办 校园招聘学生违约怎么办 应届毕业生考上公务员档案怎么办 移动硬盘弹不出来怎么办 录音笔电池坏了怎么办 上不吃大厕怎么办 跨考研究生面试怎么办