力扣hot100二刷——链表

第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。

标志掌握程度解释办法
Fully 完全掌握看到题目就有思路,编程也很流利
⭐⭐Basically 基本掌握需要稍作思考,或者看到提示方法后能解答
⭐⭐⭐Slightly 稍微掌握需要看之前写过的代码才能想起怎么做多做
⭐⭐⭐⭐absolutely no 完全没有掌握需要看题解才知道怎么做
⭐⭐⭐⭐⭐有难度的高频题需要看题解才知道怎么做,而且过几天就忘了这道题怎么做了背背
22⭐⭐Easy链表160/相交链表哈希表法,时间复杂度始终是O(M+N) 双指针法,时间复杂度最差是O(M+N),指针A遍历完链表A再接着遍历链表B;指针B遍历完链表A再遍历链表A,两者走了相同距离时,即为答案(相交节点或者空节点)
23Easy链表206/反转链表定义三个指针:lastNode curNode nextNode,curNode 从头节点开始遍历直到curtNode == null时结束遍历ListNode lastNode = null;
24⭐⭐⭐Easy链表234/回文链表错误的思路:先翻转链表,再比较翻转前后的链表,这样做翻转前的链表已经不存在了,没法比较 正确思路:快慢指针先找到链表的中点,然后反转后半段链表,再比较链表的前半段和后半段
25Easy链表141/环形链表易错点:首先要排除输入为null的情况:if(head == null) return null; 快慢指针遍历链表,如果两指针相同则存在环形
26⭐⭐Medium链表142/环形链表II在141题的基础上,多加一部即可 快慢指针相遇,证明有环 快指针指向头节点,慢指针不变,两指针同时向后移动,直至相遇即为环节点
27⭐⭐⭐Easy链表21/合并两个有序链表思路很简单,但程序有细节要注意 定义两个指针,分别指向两个链表的头节点 当两个指针所指节点均不为空时,比较它们的大小,谁小就加在新链表后,并且后移该指针 跳出循环后,可能两条链表的节点都被加入新链表了,也有可能有一条链表还有节点没被加入新链表,所以要手动判断并加入。
28Medium链表2/两数相加要注意,判断最后的进位是否 > 0,> 0的话,链表最后再加上这个进位 对应位相加(要判断,节点是否为空,为空的话相当于加 0) 求出当前节点的值:(进位 + 节点1的值 + 节点2的值)% 10 更新进位:(进位 + 节点1的值 + 节点2的值)/ 10 记得后移指针
29⭐⭐⭐Medium链表19/删除链表的倒数第N个节点定义快慢指针,快指针比慢指针快n个节点。 要注意的是,如果快指针到达队尾,说明要删的恰好是头节点,那么直接返回第二个节点 快慢指针向后移,直到快指针到达尽头(下个节点为空),此时要删的就是慢指针的下个节点
30⭐⭐⭐Medium链表24/两两交换链表中的节点哨兵节点+遍历链表的同时交换相邻节点 创建一个哨兵节点,并维护pre、cur、next三个节点 当pre.nextnull&&pre.next.nextnull 时,遍历链表,并交换节点。 程序开始先排除head == null || head.next == null的情况
31⭐⭐⭐⭐Hard链表25/K个一组反转链表把链表分为三部分:已经反转的、要反转的、未反转的 找到此次要反转的部分的尾节点end,并把尾节点的下个节点置空;end.next == null ,结束遍历 反转此部分链表(重点) 将该部分链表加到已经反转部分的后面
32⭐⭐⭐Medium链表138/随机链表的复制使用哈希表来保存节点 遍历链表,将节点保存到哈希表Map<Node, Node> 再次遍历链表,将原节点中的next、random拷贝到新节点中
33⭐⭐⭐⭐Medium链表148/排序链表归并排序 快慢指针将链表分为两半,一半为left,一半为right,如果head == null || head.next == null说明不可以再分了,就结束递归 left链表和right链表进行比较排序并合并,算法如21题。 最后要将不为空的节点加入到链表最后,再返回头节点。
34⭐⭐⭐Hard链表23/合并k个升序链表升序的优先级队列 PriorityQueue 遍历数组,将每个链表的头节点加入到队列中 当队列不为空时,循环执行以下操作 2.1 移除队头节点(最小节点) 2.2 将该节点的下一个节点加入到队列(如果不为null的话)
35⭐⭐⭐⭐⭐Medium链表146/LRU缓存双向链表+哈希表 哈希表保存<key, Node>,便于查找key 建立双向链表类与dummy哨兵节点 LRUCache(int capacity) 初始化容量、dummy节点的pre和next get操作 getKey()函数查找key是否存在,存在则返回value,否则返回-1; put操作 getKey()函数查找key是否存在,存在则更改原来的value为新的value;否则putFront()函数将key加入到最前面,并且要判断是否超出容量,超出的话要remove()删除尾节点 getkey() 查找哈希表中是否存在key,存在则putFront()函数将该节点加入到最前面,并返回Node,否则返回null putFront() 将节点加入到最前面,也就是dummy的后面 remove() 删除尾节点,也就是dummy的前面PriorityQueue pq = new PriorityQueue<>((a,b) -> a.val - b.val);

图片版:
在这里插入图片描述

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

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

相关文章

Word 小黑第2套

对应大猫42 Word1 从文件中导入新样式 样式组 -管理样式 -导入导出 -关闭Normal文件 -打开文件 -修改文件 -选中所需 -复制 调整字符宽度 调整字符间距 -字体组 加宽 适当修改磅值 文字效果通过文字组修改 另起一页&#xff0c;分隔符&#xff08;布局 -分隔符 -分节符 -下一…

iTextSharp-PDF批量导出

HTML转PDF批量导出速度太慢且使用Spire.pdf.dll限制页签10后需要开通会员才能使用-做出优化 环境&#xff1a;U9 - UI插件 需求&#xff1a;选择需要导出的客户查询对应对账数据批量导出PDF并弹出下载框保存到默认位置 using System; using System.Collections.Generic; us…

【RabbitMQ】Spring Boot 结合 RabbitMQ 完成应用间的通信

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【中间件】企业级中间件剖析 Spring 框架与 RabbitMQ 的整合主要通过 Spring AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;模块实现&#xff0c;提供了便捷的消息队列开发能力。 引…

CDefView::_GetPIDL函数分析之ListView_GetItem函数的参数item的item.mask 为LVIF_PARAM

CDefView::_GetPIDL函数分析之ListView_GetItem函数的参数item的item.mask 为LVIF_PARAM 第一部分&#xff1a; 1: kd> t SHELL32!CDefView::_GetPIDL: 001b:77308013 55 push ebp 1: kd> dv this 0x00000015 i 0n21 …

MongoDB分页实现方式对比:PageRequest vs Skip/Limit

MongoDB分页实现方式对比&#xff1a;PageRequest vs Skip/Limit 一、基本概念1.1 PageRequest分页1.2 Skip/Limit分页 二、主要区别2.1 使用方式2.2 参数计算2.3 适用场景PageRequest适用场景&#xff1a;Skip/Limit适用场景&#xff1a; 三、性能考虑3.1 PageRequest的性能特…

Manus(一种AI代理或自动化工具)与DeepSeek(一种强大的语言模型或AI能力)结合使用任务自动化和智能决策

一、Manus与DeepSeek差异 十分好奇DeepSeek和Manus究竟谁更厉害些&#xff0c;DeepSeek是知识型大脑&#xff0c;Manus则是全能型执行者。即DeepSeek专注于语言处理、知识整合与专业文本生成。其核心优势在于海量参数支持的深度学习和知识推理能力&#xff0c;例如撰写论文、润…

UI自动化:poium测试库

以下是关于 poium 测试库 的详细介绍&#xff0c;涵盖其核心功能、使用方法及与原生 Selenium 的对比&#xff0c;帮助快速掌握这一工具&#xff1a; 1. poium 简介 定位&#xff1a;基于 Selenium 的 Page Object 模式增强库&#xff0c;专注于简化元素定位和页面操作。 核心…

C#结构体(Struct)详解

在 C# 中&#xff0c;‌结构体&#xff08;struct&#xff09;‌ 是一种值类型数据类型&#xff0c;适用于封装小型数据组。与类&#xff08;class&#xff09;不同&#xff0c;结构体在栈&#xff08;Stack&#xff09;上分配内存&#xff0c;且赋值时会发生值复制。以下是结构…

UVC摄像头命令推流,推到rv1126里面去

ffmpeg命令查询UVC设备 .\ffmpeg.exe -list_devices true -f dshow -i dummy 上图是查询UVC设备的效果图&#xff0c;画红框的部分是UVC设备的设备名称"USB2.0 PC CAMERA"和设备号 "device_pnp_\\?\usb#vid_1908&pid_2310&mi_00#8&39abfe5&0&a…

Linux中的基本指令(上)

目录 ls指令 判断linux中文件 pwd指令 认识路径 ​编辑 绝对路径/相对路径 cd指令 简要理解用户 理解家目录 echo指令和printf指令 touch指令 mkdir指令 cat指令 tree指令 rmdir指令和rm指令 man指令 cp指令 which指令 alias 指令 date指令 cal指令 理解…

多数元素——面试经典150题(力扣)

题目 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1a;3 …

Qt 数据库操作(Sqlite)

数据库简介 关于数据库的基础知识这里就不做介绍了&#xff0c;相关博客可以查看&#xff1a; SQL基础知识 数据库学霸笔记 上面博客都写的比较详细&#xff0c;本文主要介绍如何使用Qt进行数据库相关操作&#xff0c;数据库分为关系型数据库和非关系型数据&#xff0c;关系…

网络安全 api 网络安全 ast技术

随着应用或者API被攻击利用已经越来越多&#xff0c;虽然来自开源组件的漏洞加剧了这一现象的发生&#xff0c;但是&#xff0c;其实主要还是在于应用程序或者API本身没有做好防范&#xff0c;根源在于源代码本身的质量没有严格把控。AST是指Application Security Testing&…

Mac 配置 Maven JDK

不使用 Homebrew&#xff0c;创建指定版本 JDK 1、官网下载指定版本并安装……省略 2、vi &#xff5e;/.zshrc 同时要检查 bash_profile 是否存在。 if [ -f ~/.bash_profile ] ; thensource ~/.bash_profile fiJAVA_HOME_11/Library/Java/JavaVirtualMachines/jdk-11.0.1…

【每日学点HarmonyOS Next知识】拖拽调整列表顺序、tab回弹、自定义弹窗this、状态变量修饰枚举

1、HarmonyOS 功能实现&#xff08;拖拽调整列表顺序&#xff09;&#xff1f; 可参考&#xff1a; import curves from ohos.curves; import Curves from ohos.curvesEntry Component struct ListItemExample {State private arr: number[] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]…

Django部署Filemanagement

Pycharm搭建项目安装虚拟环境 mysqlclient对mysql的安装&#xff0c;配置有要求 pymsql伪装成mysqlclient&#xff0c;pymysql可以操纵mysql pip install pymysql操作sql5.7 mysql8.0会出现与pycharm不兼容问题&#xff0c;会报错&#xff0c;所以降到5.7 # 进入mysql 需要…

【病毒分析】熊猫烧香病毒分析及其查杀修复

目录 前言 一、样本概况 1.1 样本信息 1.2 测试环境及工具 1.3 分析目标 二、具体行为分析 2.1 主要行为 2.1.1 恶意程序对用户造成的危害 2.2 恶意代码分析 2.2.1 加固后的恶意代码树结构图(是否有加固) 2.2.2 恶意程序的代码分析片段 三、解决方案(或总结) 3.1 …

Spring Boot集成Spring Statemachine

Spring Statemachine 是 Spring 框架下的一个模块&#xff0c;用于简化状态机的创建和管理&#xff0c;它允许开发者使用 Spring 的特性&#xff08;如依赖注入、AOP 等&#xff09;来构建复杂的状态机应用。以下是关于 Spring Statemachine 的详细介绍&#xff1a; 主要特性 …

数组总和 (leetcode 40

leetcode系列 文章目录 一、核心操作二、外层配合操作三、核心模式代码总结 去重方式和之前三数之和一样&#xff0c;也可以用used数组去重&#xff0c;但本次尝试使用set去重 一、核心操作 如果count为0了&#xff0c;则证明正好减到了0&#xff0c;就可以收获&#xff0c;…

sqli-lab靶场学习(八)——Less26-28

前言 25关已经出现了初步的一些关键字过滤&#xff0c;通过双写可以绕过。后面的关卡&#xff0c;我们会遇到更多关键字过滤&#xff0c;需要各种技巧绕过。 Less26 第26关写了会过滤空格和注释符。有很多的答案&#xff0c;会用%a0替代空格&#xff0c;但据说这是sqli-labs部…