首页 > 其他分享 >18. 四数之和

18. 四数之和

时间:2025-01-14 13:21:06浏览次数:1  
标签:四数 target nums int 18 right && left

题目

这道题依旧很懵,感觉和15. 三数之和差不多,但是还是不会写,看了卡哥思路,很详细,卡哥关于这道题的视频讲解也很好。

img

跟着卡哥写的代码:

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        vector<vector<int>> result;
        sort(nums.begin(), nums.end());
        for (int k = 0; k < nums.size(); ++k)
        {
            if (nums[k] > target && nums[k] >= 0)
                break;
            if (k > 0 && nums[k] == nums[k - 1])
                continue;
            for (int i = k + 1; i < nums.size(); ++i)
            {
                if (nums[k] + nums[i] > target && nums[k] + nums[i] >= 0)
                    break;
                if (i > k + 1 && nums[i] == nums[i - 1])
                    continue;
                int left = i + 1;
                int right = nums.size() - 1;
                while (right > left)
                {
                    if ((long)nums[k] + nums[i] + nums[left] + nums[right] > target)
                        --right;
                    else if ((long)nums[k] + nums[i] + nums[left] + nums[right] < target)
                        ++left;
                    else 
                    {
                        result.push_back(vector<int>{nums[k], nums[i], nums[left], nums[right]});
                        while (right > left && nums[right] == nums[right - 1])  --right;
                        while (right > left && nums[left] == nums[left + 1])    ++left;
                        --right;
                        ++left;
                    }
                }
            }
        }
        return result;
    }
};

标签:四数,target,nums,int,18,right,&&,left
From: https://www.cnblogs.com/hisun9/p/18670588

相关文章

  • 【JAVA 基础 第(18)课】HashSet 使用方法详解
    HashSet:Set接口的实现类,存放无序的,不可重复的元素判断是否为重复的对象比较hashCode()方法的返回值,如果不同,判定为不同的对象,如果相同,执行第二步判断equals()方法的返回值,如果为true,则判为相同的对象,如果为false,则为不同的对象publicclassHashSetTest{ publicstatic......
  • 18. 大学生HTML5期末大作业 ―【简单的旅游网页】 Web前端网页制作 html5+css3
    目录一、网页概述二、网页文件三、网页效果四、代码展示1.html2.CSS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐一、网页概述本实例应用html5+css3,div+css布局,代码简单,带实验报告书。本网页支持如Dreamweaver、HBuilder、Text......
  • 《零基础Go语言算法实战》【题目 2-18】获取结构体中字段的 tag 值
    《零基础Go语言算法实战》【题目2-18】获取结构体中字段的tag值在Go语言中,使用json包时,在结构体中的字段前会加上tag,有没有什么办法可以获取到这个tag的内容呢?举例说明。【解答】tag信息可以通过reflect包内的方法获取,下面通过一个例子来加深理解:packagema......
  • 【复现】基于自适应遗传算法的分布式电源优化配置[IEEE33、IEEE118节点](Matlab代码实
     ......
  • Python 魔法学院 - 第18篇:Python 多线程 ⭐⭐⭐
    目录引言1.多线程编程基础1.1什么是多线程?1.2为什么需要多线程?1.3Python中的多线程模块2.创建和启动线程2.1使用`threading.Thread`创建线程2.2使用`target`参数创建线程3.线程同步3.1为什么需要线程同步?3.2使用`Lock`实现线程同步3.3使用`RLock`......
  • LeetCode热题100中 35. 46. 70. 73. 118.
    35.搜索插入位置题目描述:实现思路:        这里主要就是二分查找,二分查找要注意对边界值的处理,l是数组的第一位,r是数组的最后一位,l<=r我们就返回l,因为我们的判断是nums[mid]<target 取的是mid的左区间已经不包含mid了,所以是 l=mid+1。代码:var......
  • 【IPQ5018】IPQ5018 5G 获取支持信道列表并格式化输出字符串
     IPQ5018    IPQ5018isahighlyintegrated802.11axWi-Fi/Bluetooth5.2system-on-chip(SoC)designedandbuiltforhigh-performance,powerefficient,andcost-effectivewirelessnetworkingapplicationsincludinghomerouters,meshnodes,andgate......
  • CS61B srping 2018 disc04 https://sp18.datastructur.es/
    extends(扩展)和override(重写)extends关系导致的类型,子类一定是父类,父类一定不是子类。就赋值而言,父类a=子类b是ok的;反过来子类x=父类y;是不ok的,也就是说赋值时,类型层级上,右边一定是小于(低于)左边的。给定Animal类,填写Cat类的定义,以便在greet()被调用时,......
  • 关于此题[ABC350E] Toward 0和[ABC188F] +1-1x2记忆化搜索的一些总结
    传送门1传送门2这两道题都有个特性,那就是数据范围到了\(10^{18}\),这会让我们想用记忆化搜索或者期望DP的想法望而却退但是实际上我们可以用map。有人会说,用map那时间上貌似也过不去啊!但是我们发现这两道题当中,我们可以进行的操作都有除法操作,这就有点像势能线段树,时间复杂度实......
  • CF718E Matvey's Birthday
    Matvey'sBirthday题目链接。Problem给定一个仅包含a~h的字符串(八个字符)。有一个\(n\)个结点的无向图,编号为\(0\)到\(n−1\)。结点\(i\)与结点\(j\)间有边相连当且仅当\(|i-j|=1\)或\(S_i=S_j\)。求这个无向图的直径和有多少对点间的最短距离与直径相同。数据......