15. 三数之和

简介: LeetCode算法题,使用双指针方法解题
public List<List<Integer>> threeSum(int[] nums) {
   
            Arrays.sort(nums);
            ArrayList<List<Integer>> result = new ArrayList<>();
            int n = nums.length;
            for (int i = 0; i < n; i++) {
   
                if (i != 0 && nums[i] == nums[i - 1]) continue;
                int p = i + 1;
                int q = n - 1;
                while (p < q) {
   
                    if (p >= i + 2 && nums[p] == nums[p - 1]) {
   
                        p++;
                        continue;
                    }
                    if (q <= n - 2 && nums[q] == nums[q + 1]) {
   
                        q--;
                        continue;
                    }

                    int sum = nums[p] + nums[q];
                    if (sum == -1 * nums[i]) {
   
                        ArrayList<Integer> resultItem = new ArrayList<>();
                        resultItem.add(nums[i]);
                        resultItem.add(nums[p]);
                        resultItem.add(nums[q]);
                        result.add(resultItem);
                        p++;
                        q--;
                    } else if (sum < -1 * nums[i]) {
   
                        p++;
                    } else {
   
                        q--;
                    }
                }
            }
            return result;
        }
目录
相关文章
|
4月前
【LeetCode 16】15.三数之和(双指针法)
【LeetCode 16】15.三数之和(双指针法)
47 1
|
算法
【算法专题突破】双指针 - 三数之和(7)
【算法专题突破】双指针 - 三数之和(7)
65 0
|
4月前
【LeetCode 15】15.三数之和
【LeetCode 15】15.三数之和
73 0
|
6月前
|
算法
LeetCode第15题三数之和
该文章介绍了 LeetCode 第 15 题三数之和的解法,通过先对数组排序,使用双指针减少循环层数,依次取一个元素作为第一个元素,通过双指针法寻找符合条件的三元组,并进行去重处理,同时总结了 2 数之和可使用哈希表解决,超过 2 数之和可使用双指针减少循环次数。
LeetCode第15题三数之和
|
8月前
18.四数之和
18.四数之和
|
9月前
15. 三数之和
15. 三数之和
52 3
|
8月前
15.三数之和
15.三数之和
|
9月前
|
Java C++ Python
leetcode-15:三数之和
leetcode-15:三数之和
48 0
|
9月前
|
算法 C++
(C++)三数之和--双指针法
(C++)三数之和--双指针法
53 0
|
测试技术 索引
leetcode_15. 三数之和
题目链接: 15. 三数之和 据说华为的机试经常考这题,而且这道题也是扩展性极强的一道题,你可以看到18. 四数之和,或者人为修改的五数之和,六数之和,乃至n 数之和,也就是
leetcode_15. 三数之和