LeetCode18-四数之和

在这里插入图片描述
注意!其中nums数值的范围,四个加一起会导致INT溢出,long类型则是64位的整数,因此不会导致溢出,这也是本题难点之一!

大佬解法(拿捏offer的解法)

经过反复的代码比对和Debug,发现大佬解法的速度之快体现在足足7个if语句的剪枝,其中包括了2个关键性的去重的if语句以及2个关键性的k,h去重while语句!!!

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> ans=new ArrayList<>();int i=0,j=0,k=0,n=nums.length,h=n-1;Arrays.sort(nums);for(;i<n-3;++i){j=i+1;if((nums[i]>0&&target<0)||(nums[i]>=Integer.MAX_VALUE/4)){//剪枝1return ans;}     if(i>0&&nums[i]==nums[i-1]){//i的去重,剪枝2continue;}if((long)nums[i]+nums[i+1]+nums[i+2]+nums[i+3]>target){//剪枝3break;}  if((long)nums[i]+nums[n-3]+nums[n-2]+nums[n-1]<target){//剪枝4continue;}for(;j<n-2;++j){k=j+1;h=n-1;if(j>i+1&&nums[j]==nums[j-1]){// j的去重,剪枝5continue;}if((long)nums[i]+nums[j]+nums[j+1]+nums[j+2]>target){//剪枝6break;}if((long)nums[i]+nums[j]+nums[n-1]+nums[n-2]<target){//剪枝7continue;}for(;k<h;){long sum=0;sum=(long)nums[i]+nums[j]+nums[k]+nums[h];if(sum==target){List<Integer> res=Arrays.asList(nums[i],nums[j],nums[k],nums[h]);ans.add(res);// h=n-1;// k++;while(k<h&&nums[k]==nums[k+1]){k++;}//k的去重k++;while(k<h&&nums[h]==nums[h-1]){h--;}//h的去重--h;}else if(sum>target){h--;}else if(sum<target){k++;}}}}return ans;}
}

暴力解法(面试必挂,只能回家斗地主的解法)

根据三数之和的经验和力抠提示的测试用例通过了,md真的比较难

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> ans=new LinkedList<>();int i=0,j=0,k=0,n=nums.length,h=n-1;Arrays.sort(nums);for(;i<n-3;++i){j=i+1;if(nums[i]>=Integer.MAX_VALUE/4){return ans;}       for(;j<n-2;++j){k=j+1;h=n-1;for(;k<h;){int sum=0;sum=nums[i]+nums[j]+nums[k]+nums[h];if(sum>target){h--;}else if(sum<target){k++;}else {List<Integer> res=new LinkedList<>();res.add(nums[i]);res.add(nums[j]);res.add(nums[k]);res.add(nums[h]);if(!ans.contains(res))//速度瓶颈在这里,卡在17ms的时间ans.add(res);h=n-1;k++;while(k>=1&&k<n&&nums[k]==nums[k-1]){k++;}while(h>=0&&h+1<n&&nums[h]==nums[h+1]){h--;}}}}}return ans;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/173801.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloudalibaba2

一、nacos简介 Nacos&#xff08;全称为"Nano Service"&#xff09;是一个用于动态服务发现、配置管理和服务元数据的开源平台。它由阿里巴巴集团于2018年开源&#xff0c;并逐渐成为云原生应用中的重要组件之一。 Nacos提供了以下主要功能&#xff1a; 1. 服务发…

ctf之流量分析学习

链接&#xff1a;https://pan.baidu.com/s/1e3ZcfioIOmebbUs-xGRnUA?pwd9jmc 提取码&#xff1a;9jmc 前几道比较简单&#xff0c;是经常见、常考到的类型 1.pcap——zip里 流量分析里有压缩包 查字符串或者正则表达式&#xff0c;在包的最底层找到flag的相关内容 我们追踪…

Flutter笔记:关于Flutter中的大文件上传(上)

Flutter笔记 关于Flutter中的大文件上传&#xff08;上&#xff09; 大文件上传背景与 Flutter 端实现文件分片传输 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#…

Go利用反射实现一个ini文件的解析器程序

package mainimport ("bufio" // 逐行读取配置文件"fmt""log""os""reflect""strconv""strings" )type Config struct { // 定义配置结构体Section1 Section1 ini:"section1" // 嵌套结构体1…

【milkv】1、光感bh1750驱动添加及测试

前言 本章介绍在milkv-duo开发板上添加光感bh1750&#xff0c;并实现应用层测试。 一、电路图查看 1.1 duo开发板i2c引脚 https://github.com/milkv-duo/duo-files 这些都是可以作为i2c使用的引脚 注意&#xff1a;电路图中的gpio0、1对应的是芯片上的gpio28、29&#…

基于springboot的教学在线作业管理系统(源码+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

制造企业使用设备健康管理平台的好处

智能科技的发展不仅改变了我们的日常生活&#xff0c;也给工业制造领域带来了巨大的变化。在制造业生产线上&#xff0c;每天都在使用各种不同的机器设备来生产我们日常使用的物品。然而&#xff0c;这些设备的维护、维修和状态监测成为了制造企业的一大挑战。随着科技的发展&a…

工作记录-------MySql主从同步

MySql主从同步简述&#xff1a; MySQL主从同步&#xff0c;可以实现将数据从一台数据库服务器同步到多台数据库服务器。MySQL数据库自带主从同步功能&#xff0c;经过配置&#xff0c;可以实现基于库、表结构的多种方案的主从同步。 Redis是一种高性能的内存数据库&#xff1…

【milkv】0、duo编译环境搭建

一、开发资料整理 Docker https://hub.docker.com/repository/docker/dreamcmi/cv1800-docker/general GitHub https://github.com/milkv-duo/duo-buildroot-sdk CV181x/CV180x MMF SDK 开发文档汇总 https://developer.sophgo.com/thread/471.html cv181x芯片使用的交叉…

YOLOv8全网独家优化:IoU系列篇 | Inner-IoU融合MPDIoU,创新十足,2023年11月最新IoU改进

🚀🚀🚀本文改进: Inner-IoU(基于辅助边框的IoU损失)结合MPDIoU进行创新,创新十足,全网首发 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.Inner-IoU介绍 论文:https://arxiv.org/abs/2311.02…

【python 生成器 面试必备】yield关键字,协程必知必会系列文章--自己控制程序调度,体验做上帝的感觉 1

python生成器系列文章目录 第一章 yield — Python (Part I) 文章目录 python生成器系列文章目录前言1. Generator Function 生成器函数2.并发和并行&#xff0c;抢占式和协作式2.Let’s implement Producer/Consumer pattern using subroutine: 生成器的状态 generator’s st…

gpt-4-vision-preview 识图

这些图片都是流行动画角色的插图。 第一张图片中的角色是一块穿着棕色方形裤子、红领带和白色衬衫的海绵&#xff0c;它站立着并露出开心的笑容。该角色在一个蓝色的背景前&#xff0c;显得非常兴奋和活泼。 第二张图片展示的是一只灰色的小老鼠&#xff0c;表情开心&#xf…