题解 | #三数之和#

三数之和

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

import java.util.*;
public class Solution {
    public ArrayList<ArrayList<Integer>> threeSum(int[] num) {
         ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
        if (num.length < 3) {
            return res;
        }

        // 数组从小到大排序
        Arrays.sort(num);

        for (int i = 0; i < num.length; i++) {
            if (num[i] >0) {
                return res;
            }
            if ((i >0 && num[i] == num[i-1])) {
                continue; //去重
            }
           int left = i + 1;
           int right = num.length - 1;
           while (left < right) {
               if (num[i] + num[left] + num[right] == 0) {
                   ArrayList<Integer> temp = new ArrayList<Integer>();
                   temp.add(num[i]);
                   temp.add(num[left]);
                   temp.add(num[right]);
                   res.add(temp);
                   while (left < right && num[left] == num[left+1]) {
                       left++;
                   }
                   while (left < right && num[right] == num[right-1]) {
                       right--;
                   }
                   left++;
                   right--;
               } else if (num[i] + num[left] + num[right] <0) {
                    left++;
               }else {
                   right--;
               }
           }
        }
        return res;
    }
}
#牛客网在线编程#
全部评论

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务