力扣15.三数之和Java

简介: 力扣15.三数之和Java

题目

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

image.png

代码

class Solution {

   public List> threeSum(int[] nums) {

       int length = nums.length;

       List> res = new ArrayList>();

       if(length < 3){

           return res;

       }

       Arrays.sort(nums);

       for(int i = 0; i < length-2; i++){

           int a = nums[i];

           if(i > 0 && a == nums[i-1]){

               continue;

           }

           for(int j = i+1; j < length-1; j++){

               int b = nums[j];

               if(b == nums[j-1] && j-1 != i){

                   continue;

               }

               int cpl = length-1;

               int obj = -a-b;

               while(cpl != j && nums[cpl] >= obj){

                   if(nums[cpl] == obj){

                       List list = new ArrayList<>();

                       list.add(a);

                       list.add(b);

                       list.add(nums[cpl]);

                       res.add(list);

                       break;

                   }

                   else{

                       cpl--;

                   }

               }

           }

       }

       return res;

   }

}


相关文章
|
算法 Java
LeetCode(一)Java
LeetCode(一)Java
159 0
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
178 6
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
196 2
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
186 1
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
198 1
|
算法 Java
[Java·算法·简单] LeetCode 283. 移动零
[Java·算法·简单] LeetCode 283. 移动零
132 2
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
227 0
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
190 0
|
存储 算法 Java
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
162 0
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
136 0