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

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;}
};

相关文章:

  • 【Linux】进程状态、优先级、切换和调度
  • 三、transformers基础组件之Model
  • 判断一个数组有没有重复值
  • PID与模糊PID系统设计——基于模糊PID的水下航行器运动控制研究Simulink仿真(包含设计报告)
  • 基于STM32、HAL库的BMP388 气压传感器 驱动程序设计
  • Blender 入门教程(一):模型创建
  • vue-pdf-embed预览PDF
  • 基于SpringBoot的校园周边美食探索及分享平台【附源码+数据库+文档下载】
  • 什么是内存刷新
  • 视频翻译软件有哪些?推荐5款视频翻译工具[特殊字符][特殊字符]
  • 各类型和字节数组互相转换
  • #将一个 .c 文件转变为可直接运行的文件过程及原理
  • 处理均值的配对比较
  • 【记录nginx请求头参数丢失问题】
  • TongWeb7.0常用-D参数说明
  • 企业级商城系统容器化部署技术方案
  • 产品文档撰写--金字塔原理--实战3
  • Linux系统管理与编程18:自动化部署dhcp服务
  • Matlab 基于滑模自抗扰的高速列车自动驾驶算法研究
  • RWA开发全解析:技术架构、合规路径与未来趋势
  • 周启鸣加盟同济大学,曾任香港浸会大学深圳研究院院长
  • 特朗普访中东绕行以色列,专家:凸显美以利益分歧扩大
  • 人民网评:守护健康证的“健康”,才有舌尖上的安全
  • 盖茨说对中国技术封锁起到反作用
  • “降息潮”延续,多家民营银行下调存款利率
  • 男子发寻母视频被警方批评教育,律师:发寻亲信息是正当行为