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

18. 四数之和

时间:2024-10-13 23:01:31浏览次数:6  
标签:四数 target nums int 18 right && left

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

 

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

相关文章

  • 初学Java基础Day18---面相对象之抽象类及其抽象方法,接口的使用及其面试题
    一,抽象类及其抽象方法的使用1.抽象方法:没有代码块,使用abstract修饰的方法,交给非抽象子类去实现注意:抽象方法必须在抽象类中。2.抽象类:使用abstract修饰3.代码实现://抽象类publicabstractclassPerson{//抽象方法publicabstractvoideat();}//在......
  • 186道C++面试八股文(答案、分析和深入提问)整理
    1.全局变量和局部变量有什么区别?操作系统和编译器是怎么知道的?回答全局变量和局部变量在C++中有几个主要的区别:1.作用域(Scope)全局变量:定义在所有函数外部,可以在所有函数和代码块中访问。其作用域是整个程序,直至程序结束。局部变量:定义在函数或代码块内部,只能在该函......
  • JAVA毕业设计189—基于Java+Springboot+vue的自动售水机管理系统(源代码+数据库+13000
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue的自动售水机管理系统(源代码+数据库+13000字论文+任务书)189一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、员工、管理员三种角色1、用户:注册、登录、......
  • P11187 配对序列
    P11187配对序列-洛谷|计算机科学教育新生态(luogu.com.cn)考虑DP,看注释,时间复杂度\(O(n)\)。非最优思路。#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;constintN=500010;intf[N][2];//f[i][0/1]前i个里面的最大子序列......
  • 2024-2025-1 20241318 《计算机基础与程序设计》第三周工作总结
    这个作业属于哪个课程<(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)>(如[2024-2025-1-计算机基础与程序设计]这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03这个作业的目标数字分类与计数法位置计数法进制转换模......
  • 18732 最短路问题
    ###思路1.**建模问题**:将车站和公交线路建模为图,其中车站是节点,公交线路是带权边。2.**选择算法**:使用Dijkstra算法求解从车站1到车站n的最短路径问题。3.**初始化**:创建一个优先队列(最小堆)来存储当前节点和到达该节点的最小花费。初始化所有节点的最小花费为无穷大,起......
  • 18747 关键路径
    ###思路1.**建模问题**:将项目的事件和活动建模为有向无环图(DAG),其中事件是节点,活动是有权值的边。2.**选择算法**:使用拓扑排序算法来确定节点的处理顺序,然后在拓扑排序的基础上计算最长路径。3.**初始化**:创建一个入度数组来记录每个节点的入度,并创建一个距离数组来记录......
  • P11186 三目运算
    P11186三目运算-洛谷|计算机科学教育新生态(luogu.com.cn)大模拟,利用?和:递归地把范围关系和数值组合。模拟比较麻烦。\(O(n)\)时间复杂度#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#definexfirst#defineysecondusing......
  • 洛谷P8818 [CSP-S 2022] 策略游戏
    Problem给出两个数组A,B,进行q次询问,每次分别给出这两个数组的某个区间l1,r1,l2,r2,也就是\(A_{l1\simr1}\)与\(B_{l2\simr2}\),有两位同学小L和小Q分别从A,B的以上区间中选一个数,而两数乘积为此次操作的分数,小L希望分数大,小Q希望分数小,请问他们每次以最优策略进行游戏,分数将会......