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

【优选算法】8----四数之和

有看过我上篇算法博客并且去做过的铁子们,对这道题的话应该就不会那么陌生了,因为这两道题

的解题思路有着异曲同工之妙~

-----------------------------------------begin-------------------------------------

题目解析:

跟三数之和就多了一数,看过的铁子还是很容易理解的~

讲解算法原理:

同三数之和一样,暴力算法肯定不得行的~

所以就直接在暴力算法的基础上,我们借助在三数之和的算法原理来多加一层循环,便解决这道四

数之和啦~

编写代码:

class Solution 
{
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) 
    {
        vector<vector<int>> ret;
        sort(nums.begin(), nums.end());
        int n = nums.size();

        for (int i = 0; i < n; ) 
        {
            for (int j = i + 1; j < n; ) 
            {
                int left = j + 1, right = n - 1;
                long long aim = (long long)target - nums[i] - nums[j];
                while (left < right) 
                {
                    int sum = nums[left] + nums[right];
                    if (sum < aim) 
                    {
                        left++;
                    } 
                    else if (sum > aim) 
                    {
                        right--;
                    } 
                    else 
                    {
                        ret.push_back({nums[i], nums[j], nums[left++], nums[right--]});
                        while (left < right && nums[left] == nums[left - 1]) 
                        {
                            left++;
                        }
                        while (left < right && nums[right] == nums[right + 1]) 
                        {
                            right--;
                        }
                    }
                }
                j++;
                while(j<n&&nums[j]==nums[j-1])
                {
                    j++;
                }
            }
            i++;
            while(i<n&&nums[i]==nums[i-1])
            {
                i++;
            }
        }
        return ret;
    }
};

与三数之和有着异曲同工之妙~

题目直达->

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

-----------------------------------------end---------------------------------------


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

相关文章:

  • mysql相关知识(详细)
  • centos7执行yum操作时报错Could not retrieve mirrorlist http://mirrorlist.centos.org解决
  • 软件测试 —— 性能测试(jmeter)
  • MFC程序设计(二)基于对话框编程
  • OSPF协议部分解读
  • 数据结构-二叉树
  • 网络安全 | 0day漏洞介绍
  • iOS 集成ffmpeg
  • 深度剖析:AI Agent 与 RPA 融合的底层技术逻辑
  • python 组播udp诊断
  • 解锁C#编程新姿势:Z.ExtensionMethods入门秘籍
  • MySQL用户授权、收回权限与查看权限
  • AI知识库如何提升电子电器企业的运营效率
  • MVCC在MySQL中实现无锁的原理
  • C语言基础------练习
  • WordPress标签导入插件
  • 时间类型数据处理:基于Python的datetime库和pandas库
  • JVM之Java编译到执行(1)--引
  • 教育培训微信小程序ssm+论文源码调试讲解
  • CBAM-2018学习笔记
  • 如何使 LLaMA-Factory 支持 google/gemma-2-2b-jpn-it 的微调
  • 网络(二)协议
  • GIT的常规使用
  • 【MySQL — 数据库增删改查操作】深入解析MySQL的create insert 操作
  • docker 启动镜像命令集合
  • Java 大视界 -- Java 大数据中的异常检测技术与应用(61)