LeetCode 18 四数之和

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目解析

固定两个数,然后利用双指针来进行剩下两个数的筛选

主要使用的是三数之和的思想,具体可以看我上篇博客

注意去重

代码

cpp 复制代码
class Solution 
{
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) 
    {
        // 排序
        sort(nums.begin(),nums.end());
        int n=nums.size();
        vector<vector<int>> ret;
        for(int i=0;i<n;)
        {
            // 固定第一个值
            int a=nums[i];
            for(int j=i+1;j<n;)
            {
                // 固定第二个值
                int b=nums[j];
                int left=j+1,right=n-1;
                // 可能会越界因此使用long long
                long long d=(long long )target-a-b;
                while(left<right)
                {
                    int c=nums[left]+nums[right];
                    if(c<d)
                    {
                        left++;
                    }
                    else if(c>d)
                    {
                        right--;
                    }
                    else
                    {
                        ret.push_back({a,b,nums[left],nums[right]});
                        left++;
                        right--;
                        // 去重
                        while(left<right&&nums[left]==nums[left-1]) left++;
                        while(left<right&&nums[right]==nums[right+1]) right--;
                    }
                }
                // 去重b
                j++;
                while(j<n&&nums[j]==nums[j-1]) j++;

            }
                // 去重a
                i++;
                while(i<n&&nums[i]==nums[i-1]) i++;
        }
        return ret;

    }
};
相关推荐
阿昭L18 分钟前
堆结构与堆排序
数据结构·算法
2***574220 分钟前
人工智能在智能投顾中的算法
人工智能·算法
草莓熊Lotso24 分钟前
《算法闯关指南:动态规划算法--斐波拉契数列模型》--01.第N个泰波拉契数,02.三步问题
开发语言·c++·经验分享·笔记·其他·算法·动态规划
2501_941805311 小时前
智慧零售平台中的多语言语法引擎与实时推荐系统实践
leetcode
mit6.8247 小时前
bfs|栈
算法
CoderYanger8 小时前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
jllllyuz8 小时前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
夏鹏今天学习了吗8 小时前
【LeetCode热题100(72/100)】前 K 个高频元素
leetcode
稚辉君.MCA_P8_Java8 小时前
DeepSeek 插入排序
linux·后端·算法·架构·排序算法
多多*8 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven