当前位置: 首页 > article >正文

算法练习:四数之和

题目链接:. - 力扣(LeetCode)

这里利用双指针来控制:

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        int n = nums.size();
        sort(nums.begin(),nums.end());
        vector<vector<int>> ret;
        for(int a = 0;a < n;)
        {
            long long sum = target - nums[a];
            for(int b = a+1;b < n; )
            {
                int left = b+1,right = n-1;
                long long sum1 = sum - nums[b];
                while(left < right)
                {
                    long long add = nums[left] + nums[right];
                    if(add == sum1)
                    {
                        ret.push_back({nums[a],nums[b],nums[left],nums[right]});
                        left++;
                        right--;
                        while(nums[left] == nums[left-1] && left < right) left++;
                        while(nums[right] == nums[right+1] && left < right) right--;
                    }
                    else if(add<sum1) left++;
                    else right--;
                }
                b++;
                while(b < n && nums[b] == nums[b-1]) b++;
            }
            a++;
            while(a < n && nums[a] == nums[a-1]) a++;
        }
        return ret;
    }
};


http://www.kler.cn/a/369851.html

相关文章:

  • 做Midjourney最好图文教程-提示词公式以及高级参数讲解
  • Final2x--开源AI图片放大工具
  • StarRocks常用命令
  • selenium定位网页元素
  • HTML<label>标签
  • 网易Android开发面试题200道及参考答案 (上)
  • 数组排序简介-选择排序(Selection Sort)
  • ESP8266学习记录
  • 消息中间件mq*(Kafka)
  • 【C++】How the C++ Compiler Works
  • java_方法重载、可变参数、作用域
  • Excel-多表数据查找匹配(VLOOKUP)
  • Chromium HTML5 新的 Input 类型tel对应c++
  • 编写xml形式sql语句注意事项
  • 「C/C++」C++设计模式 之 Pimpl模式
  • `a = a + b` 与 `a += b` 的区别
  • 软考:缓存分片和一致性哈希
  • 如何搭建AI智能化招聘平台?招聘系统源码与小程序开发技术方案探讨
  • 在html中引用unpkg的vue3,v-model无法绑定方法
  • JAVA模仿银行系统要求
  • 【C语言】int类型整数取值范围的缘由
  • 【LLM论文日更 | 一种引入上下文的文档嵌入方法 】
  • Jenkins+maven+git(gogs)自动化构建打包+部署(项目实战)
  • 深度学习:YOLO v2 网络架构解析
  • 2025年NPDP产品经理认证考试时间和报考条件
  • 2974. 最小数字游戏