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;

    }
};
相关推荐
wuk9983 分钟前
使用PCA算法进行故障诊断的MATLAB仿真
算法·matlab
额呃呃6 分钟前
二分查找细节理解
数据结构·算法
无尽的罚坐人生12 分钟前
hot 100 283. 移动零
数据结构·算法·双指针
永远都不秃头的程序员(互关)25 分钟前
C++动态数组实战:从手写到vector优化
c++·算法
水力魔方1 小时前
武理排水管网模拟分析系统应用专题5:模型克隆与并行计算
数据库·c++·算法·swmm
谈笑也风生2 小时前
经典算法题型之排序算法(三)
java·算法·排序算法
大佬,救命!!!3 小时前
对算子shape相关的属性值自动化处理
python·算法·自动化·学习笔记·算子·用例脚本·算子形状
高山上有一只小老虎3 小时前
小红的推荐系统
java·算法
冰西瓜6003 小时前
贪心(一)——从动态规划到贪心 算法设计与分析 国科大
算法·贪心算法·动态规划
javachen__3 小时前
341-十道经典程序设计题目
数据结构·c++·算法