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

代码随想录 哈希 test 8

18. 四数之和 - 力扣(LeetCode)

        与三数之和类似,重点在剪枝和去重的区别,由于target可正可负,因此需要分两种情况讨论,如果target为正,则若当前选择的元素之和大于target,需要跳出这种选择,如果target为负,则若当前选择的元素之和大于target,需要跳出这种选择,可以将这两种情况简化(不完全相同)为判断当前选择的元素之和大于target且选择的元素之和>=0(目标值为-100,若元素为-99,-1,0也可以成立),去重与之前类似,注意选择第二个元素时同样需要类似的剪枝。

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        vector<vector<int>> res;
        sort(nums.begin(), nums.end());
        for(int j = 0; j < nums.size(); j++){
            if(nums[j] > target && nums[j] >= 0) break;
            if(j > 0 && nums[j] == nums[j-1]) continue;

            for(int i = j + 1; i < nums.size(); i++){
                if(nums[i] + nums[j] > target && nums[i] + nums[j] >= 0) break;
                if(i > j + 1 && nums[i] == nums[i - 1]) continue;

                int l = i + 1, r = nums.size() - 1;
                while(l < r){
                    if((long)nums[j] + nums[i] + nums[l] + nums[r] < target) l++;
                    else if((long)nums[j] + nums[i] + nums[l] + nums[r] > target) r--;
                    else{
                        res.push_back({nums[j],nums[i], nums[l], nums[r]});
                        while(r > l && nums[l + 1] == nums[l]) l++;
                        while(r > l && nums[r - 1] == nums[r]) r--;
                        l++, r--;
                    }
                }
            }
        }
        return res;
    }
};


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

相关文章:

  • 数据库环境安装(day1)
  • 【通俗理解】AI的两次寒冬:从感知机困局到深度学习前夜
  • 加速科技荣获“浙江省企业研究院”认定
  • Node.js JXcore 打包教程
  • 基于phpstudy快速搭建本地php环境(Windows)
  • 深度学习:探索人工智能的未来
  • Oracle Dataguard(主库为双节点集群)配置详解(2):备库安装 Oracle 软件
  • Android14上使用libgpiod[gpioinfo gpioget gpioset ...]
  • Word快捷键汇总
  • 《软硬协同优化,解锁鸿蒙系统AI应用性能新高度》
  • 《通过财报看企业》
  • springmvc搭建流程
  • ClickHouse 教程
  • # 网络编程 - 轻松入门不含糊
  • 杭州铭师堂的云原生升级实践
  • 【轻松学C:编程小白的大冒险】--- 选择 开发工具(IDE)Dev-c++ 03
  • 初识FPGA
  • Qt C++读写NFC标签NDEF网址URI
  • 第30天:PHP应用组件框架前端模版渲染三方插件富文本编辑器CVE审计
  • Java 语法糖详解
  • 如何评价deepseek-V3 VS OpenAI o1 自然语言处理成Sql的能力
  • 智能合约:区块链世界的自动化契约
  • 深入分析 Android BroadcastReceiver (四)
  • 创建型模式3.建造者模式
  • 【LC】169. 多数元素
  • css如何隐藏一个元素