力扣爆刷第150天之TOP100五连刷(几数之和、堆排、合并链表)

力扣爆刷第150天之TOP100五连刷(几数之和、堆排、合并链表)

文章目录

      • 力扣爆刷第150天之TOP100五连刷(几数之和、堆排、合并链表)
      • 一、15. 三数之和
      • 二、53. 最大子数组和
      • 三、912. 排序数组
      • 四、21. 合并两个有序链表
      • 五、1. 两数之和

一、15. 三数之和

题目链接:https://leetcode.cn/problems/3sum/description/
思路:经典的两数之和、三数之和,两数之和使用map,三数之和需要考虑的是去重和早停。
三数之和,三个数,第一个数单独拿出来,然后剩下的两个数在一块,这就又形成了两数之和了。首先给整个数组排序,第一个数固定不动,看看剩下两个数加一块的三数之和,如果大于0说第三个数大了,要左移,如果小于0说明第二哥数小了,要右移。对于后两个数的去重,相同的数要抛弃。

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> result = new ArrayList<>();Arrays.sort(nums);for(int i = 0; i < nums.length-2; i++) {if(nums[i] > 0) break;if(i > 0 && nums[i] == nums[i-1]) continue;int j = i+1, k = nums.length-1;while(j < k) {int t = nums[i] + nums[j] + nums[k];if(t == 0) {List<Integer> list = new ArrayList();list.add(nums[i]);list.add(nums[j]);list.add(nums[k]);result.add(list);while(j < k && nums[j] == nums[j+1]) j++;while(j < k && nums[k] == nums[k-1]) k--;j++;k--;}else if(t > 0) {k--;}else{j++;}}}return result;}
}

二、53. 最大子数组和

题目链接:https://leetcode.cn/problems/maximum-subarray/description/
思路:本题可以用贪心,也可以用动规,如果使用贪心的话,因为求的是最大连续子数组的和,所以只要子数组的和大于0我们就不停的记录最大值,如果子数组的和小于0了,那么就重新开始。

class Solution {public int maxSubArray(int[] nums) {int sum = 0, max = nums[0];for(int i : nums) {sum += i;max = Math.max(max, sum);if(sum < 0) sum = 0;}return max;}
}

三、912. 排序数组

题目链接:https://leetcode.cn/problems/sort-an-array/description/
思路:排序算法嘛,经典题目,一般不是快排就是堆排、归并,如果测试用例有有序的存在,你还不太会写变体的快排的话,写堆排就可以。
思路就是先构建大顶堆,层于层之间有序,层内无序,然后每次把堆顶元素替换到尾部,由此即可排序。

class Solution {public int[] sortArray(int[] nums) {heapSort(nums);return nums;}void heapSort(int[] nums) {for(int i = nums.length/2-1; i >= 0; i--) {builHeap(nums, i, nums.length);}for(int i = nums.length-1; i > 0; i--) {int t = nums[0];nums[0] = nums[i];nums[i] = t;builHeap(nums, 0, i);} }void builHeap(int[] nums, int start, int end) {int t = nums[start], k = start;for(int i = start * 2 + 1; i < end; i = i * 2 + 1) {if(i+1 < end && nums[i] < nums[i+1]) i++;if(nums[i] > t) {nums[k] = nums[i];k = i;}else break;}nums[k] = t;}
}

四、21. 合并两个有序链表

题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/description/
思路:合并两个有序链表,经典归并排序,没啥好说的,比较然后合并即可。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode root = new ListNode(), p = root;while(list1 != null && list2 != null) {if(list1.val < list2.val) {p.next = list1;list1 = list1.next;}else{p.next = list2;list2 = list2.next;}p = p.next;}if(list1 != null) p.next = list1;if(list2 != null) p.next = list2;return root.next;}
}

五、1. 两数之和

题目链接:https://leetcode.cn/problems/two-sum/description/
思路:经典两数之和,使用map记录每一个数与target的差值,然后如果当前数出现在map中,就说明找到两数之和了。

class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<>();for(int i = 0; i < nums.length; i++) {if(map.containsKey(nums[i])) {return new int[] {map.get(nums[i]), i};}map.put(target - nums[i], i);}return new int[] {-1, -1};}
}

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

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

相关文章

【CH32V305FBP6】USBD HS 中断分析

文章目录 前言中断分析 USBHS_IRQHandler传输完成&#xff1a;USBHS_UIF_TRANSFERTOKEN_IN&#xff1a;发送完成TOKEN_OUT&#xff1a;接收完成 描述符&#xff1a;USBHS_UIF_SETUP_ACT总线复位&#xff1a;USBHS_UIF_BUS_RST总线挂起&#xff1a;USBHS_UIF_SUSPEND 前言 所有…

JavaScript创建函数和对象的常用方法

简介 随着版本的更新&#xff0c;JavaScript中存在大量的创建函数和对象的方法&#xff0c;下面是一些常见的方式以及对应的优缺点&#xff0c;内容参考&#xff1a;ES6 入门教程 创建函数 1. 函数声明&#xff08;Function Declaration&#xff09; function myFunction(a…

np.arctan2和np.arctan

np.arctan2 和 np.arctan 都是用于计算反正切函数的 NumPy 函数&#xff0c;但它们的使用和功能有所不同。 np.arctan2 np.arctan2(y, x) 计算 atan2(y,x)&#xff0c;即从坐标 (x,y)到原点的角度&#xff08;弧度&#xff09;。它考虑了两个参数的符号来确定正确的象限&…

神经网络 torch.nn---nn.RNN()

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) RNN — PyTorch 2.3 documentation torch.nn---nn.RNN() nn.RNN(input_sizeinput_x,hidden_sizehidden_num,num_layers1,nonlinearitytanh, #默认tanhbiasTrue, #默认是Truebatch_firstFalse,dropout0,bidirection…

Android开发之音乐播放器添加排行需求

Music统计功能需求 1.记录歌曲名称与次数(歌曲播放结束算一次)&#xff0c;根据播放次数制作一个排行列表;&#xff08;开始说要记录歌手&#xff0c;后面debug发现这个字段没有&#xff0c;暂时不记录&#xff09; 2.记录播放歌曲的时长&#xff0c;时间累加&#xff1b;&…

sourcemap

sourcemap介绍 什么是sourceMap sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术webpack通过配置可以自动给我们source maps文件&#xff0c;map文件是一种对应编译文件和源文件的方法 类型含义source-map原始代码 最好的sourcemap质量…

element table 点击某一行中按钮加载

在Element UI中&#xff0c;实现表格&#xff08;element-table&#xff09;中的这种功能通常涉及到数据处理和状态管理。当你点击某一行的按钮时&#xff0c;其他行的按钮需要动态地切换为加载状态&#xff0c;这可以通过以下步骤实现&#xff1a; 1.表格组件&#xff1a;使用…

一文读懂Web Codecs API:浏览器背后的媒体魔术师

引言 ​在早期的Web 网页中&#xff0c;视频播放通常要依靠 Flash 和 Silverlight 等插件来完成&#xff0c;浏览器是不支持直接播放视频的。 随着网络技术的发展&#xff0c;视频这种媒体方式的需求变得普遍&#xff0c;HTML5中&#xff0c;出现了一个新的元素Video&#xf…

【全开源】旅行吧旅游门票预订系统源码(FastAdmin+ThinkPHP+Uniapp)

&#x1f30d;旅游门票预订系统&#xff1a;畅游世界&#xff0c;一键预订 一款基于FastAdminThinkPHPUniapp开发的旅游门票预订系统&#xff0c;支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统&#xff0c;提供前后台无加密源码&#xff0c;支…

RabbitMQ延迟消息(通过死信交换机实现)

延迟消息&#xff1a;生产者发送消息时指定一个时间&#xff0c;消费者不会立刻收到消息&#xff0c;而是在指定时间后才收到消息 通过DLX和TTL模拟出延迟队列的功能&#xff0c;即&#xff0c;消息发送以后&#xff0c;不让消费者拿到&#xff0c;而是等待过期时间&#xff0…

山东大学软件学院多核平台上的并行计算期末回忆版

&#xff08;2021级&#xff0c;大数据专业&#xff0c;老师是lwg和yzk&#xff0c;考题全是考前老师说的原题&#xff0c;毫无变化&#xff0c;最终期末分还是看实验情况多一些&#xff0c;但是老师到底是怎么比较的大家的实验性能&#xff0c;让我很头大&#xff0c;晕~&…

linux驱动学习(十三)之锁

需要板子一起学习的可以这里购买&#xff08;含资料&#xff09;&#xff1a;点击跳转 一、锁的作用 1、同步和互斥 1)同步:同一件事情的依次处理&#xff0c;数据的接收---> 数据的处理 --->数据的发送 2)互斥---- 防止对临界资源的竞争&#xff0c;在一个时刻&#…

18. SDP协议

SDP协议描述 SDP(Session Description Protocol)它只是一种信息格式的描述标准&#xff0c;本身不属于传输协议&#xff0c;但是可以被其他传输协议用来交换必要的信息。 SDP规范 多个媒体级描述 一个会话级描述 由多个<type><value>组成 会话层 会话的名称与目…

如何选择加噪使用的噪声尺度:超参数(alpha,beta)噪声尺度的设定

如何选择加噪使用的噪声尺度&#xff1a;超参数&#xff08;alpha&#xff0c;beta&#xff09;噪声尺度的设定【论文精读】 论文&#xff1a;Score-Based Generative Modeling through Stochastic Differential Equations 地址&#xff1a;https://doi.org/10.48550/arXiv.201…

开发移动端常见的问题:VW适配问题,基于 postcss 插件 实现项目vw适配

当你开发移动端的时候有一个问题是避免不了的&#xff0c;那就是当屏幕大小无论怎么变化时&#xff0c;内部尺寸也要随之发生改变&#xff0c;也就是适配问题。这里我们讲的是最新的VW适配&#xff0c;也就是用vw作为单位&#xff0c;100vw是整个页面的大小。而在开发的设计图中…

23.Dropout

在深度学习的训练过程中&#xff0c;过拟合是一个常见的问题。为了解决这个问题&#xff0c;研究者们提出了多种正则化技术&#xff0c;其中Dropout技术因其简单而有效的特点&#xff0c;得到了广泛的应用。本文将对Dropout技术的工作原理、主要优点、潜在缺点以及应用场景进行…

特种设备气瓶充装作业题库分享

1、【单选题】气瓶颜色标志是气瓶外表面涂敷的字样内容、色环数目和( )按充装气体的特性作规定的组合。(B) A、颜色 B、涂膜颜色 C、漆色 2、【多选题】( )和( )有权对于违反《中华人民共和国特种设备安全法》规定的&#xff0c;向负责特种设备安全监督管理的部门和有…

【Flask 系统教程 7】数据库使用 SQLAlchemy

SQLAlchemy 是一个功能强大的 SQL 工具包和对象关系映射 (ORM) 库。使用 Flask 和 SQLAlchemy 可以方便地连接和操作数据库。 SQLAlchemy基本操作 连接数据库 环境准备 首先&#xff0c;确保你已经安装了SQLAlchemy 。可以使用以下命令安装这些库&#xff1a; pip install…

快来!AI绘画Stable Diffusion 3终于开源了,更强的文字渲染和理解力,12G显卡可跑!

大家好&#xff0c;我是设计师阿威 Stable Diffusion 3终于开源了&#xff0c;2B参数的Stable Diffusion 3 Medium模型已经可以在HuggingFace上下载了&#xff01;如无法科学上网的小伙伴我也准备好了网盘资料&#xff0c;请看文末扫描获取哦&#xff01; Stable Diffusion 3 …

PostgreSQL 多表连接不同维度聚合统计查询

摘要:在本文中,你将学习到如何使用 PostgreSQL 完全外连接,从两个或多个表中聚合维度统计数据。 文章目录 一、常用的连接类型图示二、数据库表设计示例三、连接查询示例1. inner join 内连接(不能满足维度统计需求)2. full join 完全外连接(满足维度统计需求)一、常用的…