7.《双指针篇》---⑦三数之和(中等偏难)

题目传送门

方法一:双指针

1.新建一个顺序表用来返回结果。并排序数组。

2.for循环 i 从第一个数组元素遍历到倒数第三个数。

3.如果遍历过程中有值大于0的则break;

4.定义左右指针,以及target。int left = i + 1, right = n - 1; int target = -numsi;

5.类似两数之和。比较int sum = numsl + numsr 与 target的大小

注意:

1.不能返回重复的数组。因此我们还需要排除重复的。

2.排序之后。在sum = target的时候。我们进行 left 和 right的排重。

3.在 i++ 之后我们进行 numi 这个元素的排重。

注意:

排重的时候双指针排重记得 left < right。并且num【i】排重的时候注意 i<n-1。

java 复制代码
class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> ret = new ArrayList<>();
        Arrays.sort(nums);
        int n = nums.length-1;

        for(int i = 0; i < n-1; ){
            if(nums[i] > 0){
                break;
            }
            int left = i + 1;
            int right = n;
            int target = -nums[i];

            while(left < right){
                int sum = nums[left] + nums[right];
                if(sum == target){
                    ret.add(new ArrayList<Integer>(Arrays.asList(nums[i],nums[left],nums[right])));
                    left++;
                    right--;
                    while(left < right && nums[left] == nums[left-1]){
                        left++;
                    }
                    while(left < right && nums[right] == nums[right+1]){
                        right--;
                    }

                }else if(sum < target){
                    left++;
                }else{
                    right--;
                }
            }
            i++;
            while(i<n-1 && nums[i] == nums[i-1]){
                i++;
            }

        }
        return ret;
    }
}

复杂度分析

相关推荐
地平线开发者3 小时前
【模型轻量化专题】衡量模型轻量性的指标
算法
学习星球6 小时前
OFDM技术精讲:正交性推导、循环前缀原理与80行Python链路仿真(附实测数据)
算法·面试·前端框架
alphaTao12 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid11213 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余1 天前
那些在算法中适合巩固的知识点---1
java·前端·算法
AI情绪识别开源1 天前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
罗西的思考1 天前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60161 天前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘1 天前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天1 天前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法