java数据结构与算法刷题-----LeetCode18. 四数之和

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 此题为三数之和的衍生题,代码完全一样,只不过多了一层for循环,而多的这一层for循环,也只不过是再复制一份三数之和的for循环罢了
🏆LeetCode15. 三数之和https://blog.csdn.net/grd_java/article/details/136010556
  1. 思路和三数之和完全一样,先排序。然后枚举数组左边界,作为第一个数
  2. 然后因为多了一个数,所以我们使用同样的代码,枚举剩余3个数的左边界,作为第二个数
  3. 然后在3个数的左边界,右边区域,使用双指针进行枚举。
代码,时间复杂度O(n^3),空间复杂度,排序算法使用快速排序,需要O(logN)的栈空间复杂度。

在这里插入图片描述

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {//quadruple单词表示 4倍,4重的。quadruplet 表示四组,四套List<List<Integer>> quadruplets = new ArrayList<List<Integer>>();if(nums == null || nums.length < 4) return quadruplets;//排序Arrays.sort(nums);int length = nums.length;//枚举第一个数for(int i = 0; i < length - 3; i++){//因为需要4个数,所以第一个数,最多到倒数第4个数int x = nums[i];//拿到当前遍历的左边界,也就是4个数的第一个数if(i > 0 && x == nums[i-1]) continue;//跳过重复数字,枚举过的,不重复枚举//优化:数组已经排好序(升序),如果x+后面3个数就已经 > 0 了,那当前范围内,最小的3个数都超过目标值,后面的数越来越大,更不行//而且,这一趟都已经超过target了,后面每一趟,就更不行了,所以直接break,不用继续循环了if((long)x + nums[i+1] + nums[i+2] + nums[i+3] > target) break;//优化:如果x+倒数3个数都小于target的话,说明最大的几个数都比目标值小,那么其它的数都比它更小,更无法满足条件了//仅仅这一趟比目标值小,因为x会越来越大,所以后面可能还有满足条件的,所以只是continue跳过这一趟if((long)x + nums[length-1] + nums[length-2] + nums[length-3] < target) continue;//枚举第二个数,下面就是3数之和的代码了for(int j = i+1; j<length-2; j++){int y = nums[j];//拿到当前遍历的三数之和左边界,也就是4个数的第二个数if(j > i+1 && y == nums[j-1]) continue;if((long)x + y + nums[j+1] + nums[j+2] > target) break;if((long)x + y + nums[length-1] + nums[length-2] < target) continue;//双指针枚举另外两个数int left = j + 1, right = length - 1;while(left < right){int z = nums[left], t = nums[right];long sum = (long)x + y + z + t;//4数之和if(sum > target) --right;else if(sum < target) ++ left;else{// quadruplets.add(List.of(x,y,z,t));//下面这行和上面这行效果一样quadruplets.add(Arrays.asList(x,y,z,t));// while(left<right && nums[left]==nums[left+1])left++;// left++;// 下面这句和上面两行效果一样for(++left;left<right && nums[left] == nums[left-1]; ++left);for(--right; right>left && nums[right] == nums[right+1]; --right);}//end_else}//end_while}//end_for}//end_forreturn quadruplets;}//end_method
}//end_class

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

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

相关文章

一、Java安装JDK8

Java安装JDK8 一、Centos7.91.命令行安装2.安装包安装2.1 下载2.2 安装2.3 配置java环境 二、Windows1.下载2.安装3.配置环境变量 一、Centos7.9 1.命令行安装 yum install java-1.8.0-openjdk.x86_642.安装包安装 2.1 下载 下载地址&#xff1a;https://www.oracle.com/cn…

基于T1w/T2w 比值揭示髓磷脂相关变化

前言&#xff1a; 最近在阅读文献的时候发现2篇文章&#xff0c;是采用T1w/T2w 比值表征髓磷脂&#xff0c;有点感兴趣&#xff0c;因此尝试了一下文献所提出的方法。&#xff08;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9247578/ https://www.ncbi.nlm.nih.gov/pmc/ar…

鸿蒙开发系列教程(二十四)--List 列表操作(3)

列表编辑 1、新增列表项 定义列表项数据结构和初始化列表数据&#xff0c;构建列表整体布局和列表项。 提供新增列表项入口&#xff0c;即给新增按钮添加点击事件。 响应用户确定新增事件&#xff0c;更新列表数据。 2、删除列表项 列表的删除功能一般进入编辑模式后才可…

【C语言】Linux 内核listen系统调用代码

一、Linux 4.19内核listen系统调用代码注释 /** 开始对一个 socket 进行监听。这个函数做一些准备工作以便 socket 可以开始监听&#xff0c;* 如果操作成功&#xff0c;则将 socket 标记为准备好监听的状态。*/int __sys_listen(int fd, int backlog) {struct socket *sock…

VueCLI核心知识4:动画效果、过渡效果

1 动画效果 【代码】 <template><div><button click"isShow !isShow">显示/隐藏</button><!-- <transition name"xxx" :appear"true"> 可以指定name属性&#xff0c;也可以不指定&#xff0c;name属性在有…

Codeforces Round 926 (Div. 2)

这场比赛我觉得题目不是特别难&#xff0c;就是有点难读懂&#xff0c;基本上读懂就差不多会做了。 Problem - A - Codeforces 1.思路&#xff1a; Q1&#xff1a;首先这个题我们一定能确定一个下界答案就是最大值减去最小值&#xff0c;那么我们怎样证明下界答案就是上界答案…

数值类型的运算方式总结

提纲1&#xff1a;常见的位运算使用场景 提纲2&#xff1a;整数类型运算时的类型溢出问题&#xff0c;产生原因以及解决办法 提纲3&#xff1a;浮点类型运算时的精度丢失问题&#xff0c;产生原因以及解决办法 数值类型&#xff08;6种&#xff09;分为&#xff1a; 整型&…

六、Datax通过json字符串运行

Datax通过json字符串运行 一、场景二、代码实现 一、场景 制作一个web应用&#xff0c;在页面上配置一个json字符串&#xff0c;保存在数据库里面。在执行json的时候&#xff0c;动态在本地创建一个json文件后执行&#xff0c;并识别是否成功&#xff0c;将执行过程保存在数据…

C++数据结构与算法——字符串

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

2024年【危险化学品经营单位安全管理人员】免费试题及危险化学品经营单位安全管理人员考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员免费试题参考答案及危险化学品经营单位安全管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品经营单位安全管理人员操作证已考过的学员汇总&#xff0c;相对有效帮助…

WordPress作者页面链接的用户名自动变成16位字符串串插件Smart User Slug Hider

WordPress默认的作者页面URL链接地址格式为“你的域名/author/admin”&#xff0c;其中admin就是你的用户名&#xff0c;这样的话就会暴露我们的用户名。 为了解决这个问题&#xff0c;前面boke112百科跟大家分享了『如何将WordPress作者存档链接中的用户名改为昵称或ID』一文…

Linux进程间通信(二)-----system V共享内存

共享内存的概念 共享内存让不同进程看到同一份资源的方式就是&#xff0c;在物理内存当中申请一块内存空间&#xff0c;然后将这块内存空间分别与各个进程各自的页表之间建立映射&#xff0c;再在虚拟地址空间当中开辟空间并将虚拟地址填充到各自页表的对应位置&#xff0c;使得…

书生浦语大模型实战营-课程作业(3)

下载sentence_transformer的代码运行情况。sentence_transformer用于embedding&#xff08;转向量&#xff09; 本地构建持久化向量数据库。就是把txt和md文件抽取出纯文本&#xff0c;分割成定长&#xff08;500&#xff09;后转换成向量&#xff0c;保存到本地&#xff0c;称…

Python算法题集_二叉树的层序遍历

Python算法题集_二叉树的层序遍历 题102&#xff1a;二叉树的层序遍历1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【DFS递归】2) 改进版一【BFS迭代】3) 改进版二【BFS迭代循环】 4. 最优算法 本文为Python算法题集之一的代码示例 题102&am…

python 人脸检测器

import cv2# 加载人脸检测器 关键文件 haarcascade_frontalface_default.xml face_cascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml)# 读取图像 分析图片 ren4.png image cv2.imread(ren4.png) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 进行人脸…

数据密集型应用系统设计

数据密集型应用系统设计 原文完整版PDF&#xff1a;https://pan.quark.cn/s/d5a34151fee9 这本书的作者是少有的从工业界干到学术界的牛人&#xff0c;知识面广得惊人&#xff0c;也善于举一反三&#xff0c;知识之间互相关联&#xff0c;比如有个地方把读路径比作programming …

ESP32学习(4)——电脑远程控制LED灯

1.思路梳理 首先需要让ESP32连接上WIFI 然后创建udp socket 接着接收udp数据 最后解析数据&#xff0c;控制LED 2.代码实现 import network from socket import * from machine import Pin p2Pin(2,Pin.OUT)def do_connect(): #连接wifi wlan network.WLAN(network.STA_IF)…

122.乐理基础-五线谱-音程、度数、根音、冠音

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;五线谱的临时变音记号规则 上一个内容里练习的答案&#xff1a; 1-121看完就可以认识乐谱、熟悉乐谱了&#xff0c;从现在开始与识谱无关&#xff0c;与创作有关 参考图&#xff1a;音程与和弦只是为了撬开去往和…

Vue2学习第一天

Vue2 学习第一天 1. 什么是 vue? Vue 是一套用于构建用户界面的渐进式框架。 2. vue 历史 vue 是在 2013 年创建的&#xff0c;vue3 是 2020 出现的&#xff0c;现在主要是用 vue2&#xff0c;创新公司用的是 vue3 vue 的作者是尤雨溪&#xff0c;vue 的搜索热度比 react…

jacob使用教程---OFFICE操作几乎万能公式---读写XML

参考资料: jacob的GitHub地址https://github.com/freemansoft/jacob-project jacob官网(个人感觉不重要)https://danadler.com/tech-articles/jacob-2/ microsoft官方VBA文档(很重要,jacob所有的参数都来自于这里)https://learn.microsoft.com/zh-cn/office/vba/api/o…