Hot100部分

news2026/5/10 5:22:15
普通数组最大子数组和dp[i]表示以第 i 个元素结尾的最大子数组和通过判断前序子数组和是否为正dp[i -1]0决定是否延续合并区间排序贪心 所有区间按左端点升序排序再遍历区间若当前区间与结果列表中最后一个区间重叠则更新其右端点为两者最大值否则直接加入结果列表轮转数组先将数组整体反转再分别反转前 k 个元素和剩余元素k 对数组长度取模通过三次反转实现数组向右旋转 k 步的效果除了自身意外的数组的乘积先正向遍历数组将每个元素左侧所有数的乘积存入结果数组再反向遍历累积右侧所有数的乘积与结果数组中对应位置的左侧乘积相乘得到每个元素除自身外的乘积缺失的的第一个数组哈希归位通过原地交换将数组中 1~n 范围内的正整数归位到其对应位置数值 x 对应下标 x-1再遍历数组找到第一个位置与数值不匹配的下标 1 即为缺失的最小正整数若全部匹配说明缺失的是 n1。链表相交链表两个指针分别从两个链表头节点出发遍历完自身链表后跳至另一链表的头节点继续遍历当两指针相遇时相遇节点即为两链表第一个相交节点反转链表借助 pre和 cur双指针遍历链表通过临时变量tmp保存 cur 的下一个节点逐个将 cur 的 next 指向 pre 完成节点反转回文链表先通过快慢指针找到链表的中间节点反转中间节点开始的后半段链表再将原链表前半段与反转后的后半段逐个比对节点值全部相等则为回文链表否则不是环形链表快慢指针相遇则有环环形链表Ⅱ和技巧里寻找重复数一样先用快慢指针找到环内相遇点再让头指针与慢指针从起点和相遇点同步单步移动二者相遇的位置即为环的入口合并两个有序链表mergeTwoLists函数直接合并比较l1和l2的头结点哪个大两数相加借助虚拟头节点构建结果链表循环累加两个逆序链表的对应节点值与进位逐位通过取余得到当前位结果、取商更新进位直至链表遍历完毕且无进位最终返回虚拟头节点的下一个节点删除链表的倒数第n个节点想象一把尺子也要创建一个虚拟头结点防止删第一个元素长度为n从左到右平移尺子左端点就是倒数第n个两两相交链表的节点递归链表为空或仅含一个节点” 为终止条件将整体问题拆解为 “处理当前前两个节点” 和 “递归处理剩余子链表” 两部分K个一组翻转链表统计链表总节点数以哨兵节点dummy为辅助循环将链表按每 k 个节点为一组进行反转每组反转完成后重新拼接该组与前后链表随机链表的赋值通过 HashMap 建立原链表节点与仅复制了值的新节点的一一映射关系再遍历原链表利用该映射为每个新节点设置对应的 next 和 random 指针指向新节点而非原节点排序链表基于归并排序的分治思想先通过快慢指针找到链表中点递归将链表拆分为左右子链并各自排序再合并两个有序子链表得到整体有序的链表合并k个升序链表链表排序1个循环用ans维护结果LRU缓存LRU 缓存是遵循「最近最少使用」淘汰规则的缓存结构缓存容量满时会淘汰最久未被访问的元素保证常用数据优先留存解题核心是利用LinkedHashMap的插入 / 访问有序性通过 “删除再插入” 将访问 / 更新的元素标记为最近使用移至链表尾部容量满时删除链表头部的最久未用元素二叉树前面的题目都是简单dfs二叉树的直径后序遍历递归计算每个节点的左右子树深度同时记录以该节点为拐点的路径最大节点数层序遍历BFS队列实现二叉树的层序遍历先将根节点入队每次循环获取当前队列大小即当前层节点数遍历处理当前层所有节点并收集值同时将子节点入队二叉树的右视图同层序遍历将有序数组转化为二叉搜树和链表类似都是用分治递归但是链表找中点要快慢指针选取有序数组的中间元素作为当前子树的根节点递归将左半区间数组构建为左子树、右半区间数组构建为右子树验证二叉搜索树利用特性中序遍历结果严格递增二叉搜索树第k小的元素利用二叉树中序遍历结果严格递增特性进行中序遍历遍历过程中对节点计数通过递减 k 实现当 k 递减至 0 时当前节点值即为第 k 小的元素二叉树展开为链表先前序遍历将二叉树的所有节点按顺序存入列表再遍历列表重新拼接节点将每个节点的左子树置空右子树指向列表中的下一个节点从前序与中序遍历构造二叉树用哈希表存储中序遍历的元素索引前序遍历的首个元素作为当前根节点根据根节点在中序数组中的位置分割左右子树递归构建整棵二叉树。路径总和Ⅲ通过前缀和 DFS 回溯遍历二叉树用哈希表记录前缀和出现次数快速统计和为目标值的路径数量递归后回溯保证分支独立。二叉树的最近公共祖先递归终止条件为遇到空节点、p 或 q 节点直接返回当前节点。分别遍历左右子树单侧无结果返回另一侧两侧均有结果则当前节点为最终答案二叉树的最大路径和采用后序递归遍历以每个节点为路径最高点计算左 右 自身的路径和并更新全局最大值递归返回当前节点能向上提供的最大单链贡献值回溯全排列回溯算法递归枚举所有数字组合用used数组标记已选数字避免重复path记录当前排列排列填满时保存副本递归后撤销选择回溯最终穷举得到所有全排列子集通过startIndex控制只能从当前位置往后选元素避免生成重复子集递归时先把当前路径直接加入结果电话号码的组合和全排列的思路很像先建立数字与字母的映射表逐位遍历数字对应的字母并拼接拼完所有数字位就保存组合递归后撤销最后拼接的字母回溯最终穷举所有合法的字母组合组数总和先排序数组通过固定起始下标避免重复组合递归累加数值等于目标值时保存组合超过则直接终止循环最后回溯撤销选择括号生成回溯满足两个规则左括号比n小能随便加右括号比左括号少才能加总的字符数等于了2n停止动态规划爬楼梯dp[i] dp[i -1] dp[i - 2]杨辉三角每一个位置【i,j】的值为它正上方的值【i - 1,j】和它左上方【i - 1,j - 1】的值相加获得每行的第一个位置j0和最后一个位置ji直接赋值为 1打家劫舍dp[i] Math.max(dp[i - 1],dp[i -2] nums[i])注以下三个题格式化思路很橡完全平方数、零钱兑换、单词拆分完全平方数外层遍历目标数(1到n)内层遍历所有其平方小于i的数j²≤i 组成 i 的最少完全平方数个数为dp[i - j * j]的最小值 1零钱兑换外层遍历目标金额 i1 到 amount内层遍历所有硬币 coins [j]组成 i 的最少硬币个数为 dp [i - coins [j]] 的最小值 1补无法凑出的情况初始化dp的每个值均为amount1dp [amount] 超过 amount 则返回 - 1单词拆分外层遍历字符串前 i 个字符i 从 1 到 s.length ()内层遍历拆分点 jj 从 0 到 i-1若 dp [j] 为 true 且子串 s [j,i) 在字典中则 dp [i] 为 true最长递增子序列dp [i] 为以每个元素 nums [i] 结尾的最长递增子序列长度初始值为1遍历其之前所有更小的元素 nums [j] 并将 dp [i] 更新为 dp [j]1 的最大值乘积最大子数组两数组分别维护每个位置的最大值和最小值当前位置的乘积最大值为Math.max(当前值当前值*上一索引的最大值上一索引的最小值)分割等和子集转为01背包问题dp[j]记录容量 j 背包能装的最大和逆序遍历容量避免重复选数通过dp[target] target判断是否可分割最长有效括号dp[i]为以第i个字符结尾的最长有效括号长度仅当s[i]为)时更新若前一个字符是(则直接匹配加 2 并衔接前序有效长度若前一个是)则向前找匹配的(并累加嵌套 / 衔接的有效长度最终取dp数组最大值。多维动态规划*不同路径初始化后 dp[i][j] dp[i - 1][j] dp[i][j - 1];*最小路径和初始化后 dp[i][j] Math.min(dp[i - 1][j],dp[i][j - 1]) grid[i][j];注以下三题都是字符串相关的多维dp最长回文子串dp[i][j]表示字符串s中从索引i到j的子串是否为回文通过固定右边界j左边界i从0到j-1遍历若两端字符相等且内部子串s[i1..j-1]是回文则s[i..j]是回文同时记录最长回文的起始位置和长度最长公共子序列dp[i][j]表示text1前i个字符和text2前j个字符的最长公共子序列长度。遍历两个字符串若当前字符相等则dp[i][j] dp[i-1][j-1] 1否则取dp[i-1][j]和dp[i][j-1]的最大值编辑距离dp[i][j]表示将word1的前i个字符转换成word2的前j个字符所需的最少操作次数若当前字符相等则直接继承dp[i-1][j-1]无需对当前位操作若不等则取删除dp[i-1][j]1、插入dp[i][j-1]1、替换dp[i-1][j-1]1三者的最小值。技巧只出现一次的数字任何数异或0都为本身相同位异或为0不同位或为1循环异或返回多数元素排序后找中位数颜色分类双指针用 p0/p1 标记 0 和 1 的待填充位置通过先占 2 的位再反向填充 0/1的单遍历策略原地完成三色排序。下一个排列从后往前找到第一个升序对的左边界在其右侧找到比它大的最小数交换最后反转该边界右侧的元素以此得到字典序下最小的更大排列寻找重复数将数组映射为带环链表先用快慢指针找到环内相遇点再让头指针与慢指针从起点和相遇点同步单步移动二者相遇的位置即为环的入口也就是数组中的重复数

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…