题解 | #三数之和#

三数之和

http://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711

双指针的思想,先将数组排序,之后设定当前值(遍历即可),然后在当前值后一位为left指针,数组尾为right指针,将当前值和指针指向的数字相加判断大小,等于0则记录,小于零移动left,大于0移动right。同时注意重复值的过滤,若果重复讲指针移动,以及当前值重复的话跳出本次循环,移动后再进入循环。

import java.util.*;
public class Solution {
    public ArrayList<ArrayList<Integer>> threeSum(int[] num) {
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
    
        if(num.length < 3){
            return res;
        }
       Arrays.sort(num);
       for(int i = 0;i<num.length;i++){
           int cur = num[i];
           int left = i+1;
           int right = num.length-1;
           //最小值大于0了,没有相加的必要了。
             if(cur>0){
                   return res;
               }
              if(i>0 && num[i]==num[i-1]){
                continue;
              }
           while(left<right){
               if(cur + num[left] + num[right] == 0){
                   ArrayList<Integer> arr = new ArrayList<>();
                   arr.add(cur);
                   arr.add(num[left]);
                   arr.add(num[right]);
                   res.add(arr);
                   while(left<right&&num[left] == num[left+1]){
                        left = left + 1;
                    }
                    while(left<right&&num[right] == num[right-1]){
                        right = right - 1;
                    }
                    left++;
                    right--;
               }else if(cur + num[left] + num[right]<0){
                   left = left + 1;
               }else{
                   right =right - 1;
               }
           }
               
           }
           return res;
       }

    }

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 14:23
steelhead:你回的有问题,让人感觉你就是来学习的
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务