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

leetcode 18. 四数之和

题目描述

和leetcode 15. 三数之和用同样的方法。有两个注意点。

一是剪枝的逻辑

这是和15. 三数之和 - 力扣(LeetCode)问题不同的地方。

无法通过这种情况:

二是整数溢出

 

 

最终答案

class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(),nums.end());int len = nums.size();int left = 0;int right = 0;vector<vector<int>> res;for(int i = 0;i <len;i++){if(nums[i]>0 && nums[i]>=target)break;if(i>0&&nums[i-1]==nums[i])continue;for(int j=i+1;j <len;j++){if(nums[j]>0 && nums[i]+nums[j] >= target)break;if(j>i+1 && nums[j-1]==nums[j])continue;left=j+1;right=len-1;while(left<right){if((long)nums[i]+nums[j]+nums[left]+nums[right] == target){res.push_back({nums[i],nums[j],nums[left],nums[right]});while(left<right-1&&nums[left]==nums[left+1]) left++;while(left<right-1&&nums[right]==nums[right-1]) right--;left++;right--;}else if((long)nums[i]+nums[j]+nums[left]+nums[right] > target){right--;}else{left++;}}}}return res;}
};
http://www.xdnf.cn/news/5584.html

相关文章:

  • 力扣 旋转图像
  • 横向移动(上)
  • zorin系统详解
  • 牛客周赛 Round 92(再现京津冀蓝桥杯???)
  • C++23 中的 views::stride:让范围操作更灵活
  • 「华为」人形机器人赛道投资首秀!
  • STM32核心机制解析:重映射、时间片与系统定时器实战——从理论到呼吸灯开发
  • fiddler 配置ios手机代理调试
  • 保持Word中插入图片的清晰度
  • ✅ TensorRT Python 安装精简流程(适用于 Ubuntu 20.04+)
  • CVPR2025 | Prompt-CAM: 让视觉 Transformer 可解释以进行细粒度分析
  • 如何应对网站被爬虫和采集?综合防护策略与实用方案
  • 5.12第四次作业
  • spring常用注解
  • 从海洋生物找灵感:造个机器人RoboPteropod,它能在水下干啥?
  • 【C++贪心】P11044 [蓝桥杯 2024 省 Java B] 食堂|普及
  • 华为FAT AP配置 真机
  • Java学习手册:服务网关与路由
  • 《Effective Python》第1章 Pythonic 思维详解——深入理解流程控制中的解构利器match
  • Bravery靶机通关笔记
  • 机器学习管道 pipeline
  • OpenCV中Canny、Sobel和Laplacian边界检测算法原理和使用示例
  • django之视图
  • OpenCV图像金字塔详解:原理、实现与应用
  • 医院保洁智能化管理新范式:诺怀云医院后勤解决方案的实践探索
  • edge设置位IE模式打开网页
  • Java设计模式之装饰器模式:从基础到高级的全面解析(万字解析)
  • 【速写】KV-cache与解码的再探讨(以束搜索实现为例)
  • C 语言_可变参数宏详解
  • 硅基计划2.0 学习总结 壹 Java初阶