力扣---三数之和(Java、模拟)

题目描述:

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ?请找出所有和为 0 且 不重复 的三元组。

示例 1:

复制代码
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]

示例 2:

复制代码
输入:nums = []
输出:[]

示例 3:

复制代码
输入:nums = [0]
输出:[]

思路描述:

先排序,保证有序,然后找到所有的三个元素的组合,再去重。

代码:

java 复制代码
class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        int n=nums.length;
        Arrays.sort(nums);
        Set<List<Integer>> set=new HashSet<>();
        for(int i=0;i<n;i++){
            List<Integer> list=new LinkedList<>();
            int left=i+1;
            int right=n-1;
            while (left<right){
                if(nums[left]+nums[right]+nums[i]>0){
                    right--;
                } else if (nums[left] + nums[right] + nums[i] < 0) {
                    left++;
                }else{
                    list.add(nums[i]);
                    list.add(nums[left]);
                    list.add(nums[right]);
                    set.add(list);
                    list=new LinkedList<>();
                    left++;
                    right--;
                }
            }
        }
        return new LinkedList<>(set);
    }
}
相关推荐
Fox爱分享4 分钟前
字节二面智力题:100只老虎和1只羊关在一起,这只羊会不会被吃?
算法·面试·程序员
xin(n_n)b1 小时前
经典题目(3):把数字翻译成字符串;兑换零钱
算法
学iOS很快乐1 小时前
Pinterest Staff SDE 五轮面试全过,加拿大 TC 500K CAD,附 OA 真题和每轮考点
面试·职场和发展
惊鸿一博1 小时前
特征匹配+Glue Factory 框架评估特征提取与匹配算法时常用的度量标准
算法·特征匹配
柒和远方1 小时前
LeetCode 4. 寻找两个正序数组的中位数 —— 二分划分的艺术
javascript·python·算法
z小猫不吃鱼2 小时前
模型剪枝经典论文精读:Channel Pruning for Accelerating Very Deep Neural Networks
算法·机器学习·剪枝
njsgcs2 小时前
已知链中心距用节数算中间电机摆放位置 常量弧长 三链轮弦长模型算法
算法
2601_962440843 小时前
计算机毕业设计之jsp旅游网站管理系统
java·开发语言·算法·课程设计·旅游·推荐算法
池塘的蜗牛3 小时前
AFDM波形基于DFT的通感一体化
算法
Purple Coder4 小时前
基于电机控制的MatlabSenier模型
职场和发展