
leetcode
文章平均质量分 86
Onlooker129
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LC-只出现一次的数字、多数元素、颜色分类、下一个排列、寻找重复数
交换后,我们需要保证后续的部分是最小的排列(即按升序排列),所以反转。,则说明当前排列已经是字典序最大,我们需要将其完全反转成为字典序最小。:我们可以利用数组元素的大小范围来缩小查找区间,通过统计数字小于等于。表示我们还可以通过交换来生成更大的排列。:接着,从数组的末尾再次向左查找,找到第一个比。,这意味着一定有至少一个重复的数字。的数组进行原地排序,使得所有的。的元素个数来判断重复元素的位置。:从数组的末尾开始,找到第一个。排在前面,接着是所有的。:给定的数组包含数字。原创 2025-02-26 13:02:24 · 1118 阅读 · 0 评论 -
LC-不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离
可以通过 动态规划 来解决。机器人每次只能向下或向右移动,因此问题的核心是计算从左上角到右下角的路径数。思路:边界条件:最小路径和这是一个典型的 动态规划 问题,要求在一个网格中找到一条从左上角到右下角的路径,使得路径上的数字总和最小。每次只能向下或者向右移动一步。我们可以定义一个二维数组 ,其中 表示从左上角 到 的最小路径和。动态规划步骤:初始化:状态转移: 对于其他的 ,可以选择从上方或者从左方过来。我们取两者中较小的路径和:其中 是从上方到达当前位置的最小路径和, 是从左方到达当前原创 2025-02-25 19:07:30 · 758 阅读 · 0 评论 -
LC-单词拆分、最长递增子序列、乘积最大子数组、分割等和子集、最长有效括号
定义状态:状态转移方程:初始化:目标:最长递增子序列动态规划:时间复杂度是 ,其中 是数组的长度。乘积最大子数组动态规划:我们使用动态规划的方法来解决这个问题。由于数组中有负数,可能会影响最大值和最小值,所以我们需要追踪当前位置的最大值和最小值。每次更新最大值和最小值时,都要考虑:状态转移:对于每一个元素 ,我们要更新当前的最大值和最小值:最终,我们需要返回所有 中的最大值。分割等和子集问题转化:动态规划:最长有效括号动态规划的方法通过定义一个状态数组 来表示以原创 2025-02-24 15:06:10 · 1053 阅读 · 0 评论 -
LC-划分字母区间、爬楼梯、杨辉三角、打家劫舍、完全平方数、零钱兑换
思路:问题分析:贪心策略:步骤:爬楼梯动态规划解法:定义状态:递推公式:初始化:目标:杨辉三角 打家劫舍定义状态:状态转移方程:其中:初始状态:最终结果:完全平方数动态规划思路:状态定义:状态转移方程:初始化:目标:零钱兑换这是一个完全背包问题,我们可以使用动态规划来解决。解题思路:状态定义:状态转移方程:初始化:目标:原创 2025-02-24 13:40:11 · 779 阅读 · 0 评论 -
LC-前K个高频元素、数据流的中位数、买卖股票的最佳时机、跳跃游戏、跳跃游戏II
我们需要找出。为了实现这一点,可以使用一个最小堆。堆的大小保持为k,每次插入元素时,如果堆的大小超过k,则弹出堆顶元素。这样,堆中的元素就是出现频率前k高的元素。通过维护一个大小为k的堆,保证了堆顶元素是频率最低的元素,而堆中的其他元素频率都较高。k。原创 2025-02-24 11:00:00 · 748 阅读 · 0 评论 -
LC-最小栈、字符串解码、每日温度、柱状图中最大的矩形、数组中的第K大元素
我们可以使用最小堆来维护当前找到的。,这样堆顶的元素就是第。原创 2025-02-23 11:23:48 · 1267 阅读 · 0 评论 -
LC-在排序数组中查找元素的第一个和最后一个位置、搜索旋转排序数组、寻找旋转排序数组中的最小值、寻找两个正序数组的中位数、有效的括号
思路:二分查找基础:我们可以使用二分查找来快速定位目标值。由于数组是有序的,二分查找可以在O(log n)时间内找到目标值的一个出现位置。查找开始位置使用二分查找,调整查找条件,使得找到目标值时,继续向左搜索,直到找到第一个出现的目标值。查找结束位置使用类似的二分查找,调整查找条件,找到目标值时,继续向右搜索,直到找到最后一个出现的目标值。= -1){//找到目标值,继续向左搜索//继续向左查找,寻找第一个出现的位置}else{//找到目标值,继续向右搜索。原创 2025-02-23 11:00:00 · 837 阅读 · 0 评论 -
LC-单词搜索、分割回文串、N皇后、搜索插入位置、搜索二维矩阵
我们可以从网格中的每个单元格开始,进行深度优先搜索(DFS),并通过递归逐个匹配单词中的字符。每次匹配时,我们需要检查当前位置是否符合条件,并标记访问过的单元格,避免重复使用。:可以使用递归的方式来进行分割,递归的过程中将字符串分割成多个子串。回溯法适合用于这种路径搜索问题,我们需要在网格中寻找单词,并且每个字符都只能使用一次。:我们可以使用回溯法来逐行放置皇后,确保每次放置时不会和之前放置的皇后发生冲突。:在递归过程中,如果某个子串不是回文串,则不继续往下搜索,直接回溯。原创 2025-02-20 15:58:51 · 965 阅读 · 0 评论 -
LC-全排列、子集、电话号码的字母组合、组合总和、括号生成
回溯算法的基本思想是:子集电话号码的字母组合可以使用回溯算法来穷举所有可能的字母组合。具体做法是:组合总和括号生成思路:有效括号的定义:一个有效的括号组合需要满足:回溯法:这个问题最常用的方法是回溯法(Backtracking)。我们可以构建一个递归过程,通过不断增加左括号 或右括号 ,并在每一步判断是否满足条件来生成有效的括号组合。解决步骤:需要两个参数:递归终止条件:递归选择:原创 2025-02-19 21:48:30 · 686 阅读 · 0 评论 -
LC-岛屿数量、腐烂的橘子、课程表、实现Trie(前缀树)
我们需要遍历整个网格grid,一旦遇到'1'(陆地),说明找到了一个新的岛屿,岛屿数量count++。找到'1'后,我们需要将这个岛屿的所有相连陆地全部标记为'0'每找到一个新的'1',并完成其搜索,就代表找到了一座完整的岛屿,因此count++。原创 2025-02-19 14:06:54 · 554 阅读 · 0 评论 -
LC-二叉树展开为链表、从前序与中序遍历序列构造二叉树、路径总和III、二叉树的最近公共祖先、二叉树中的最大路径和
前序遍历 + 递归思路 从前序与中序遍历序列构造二叉树路径总和III 我们可以从树的每个节点开始,进行 深度优先搜索。在遍历过程中,我们可以利用一个 前缀和的哈希表来记录从根节点到当前节点的路径和,帮助我们快速查找是否存在某一条路径的和等于 。具体步骤:二叉树的最近公共祖先递归定义:递归步骤:二叉树中的最大路径和可以使用深度优先搜索(DFS)递归遍历每个节点,计算包含该节点的最大路径和。具体思路如下:定义递归函数 :递归终止条件:时间复杂度:原创 2025-02-18 17:19:34 · 998 阅读 · 0 评论 -
LC-二叉树的层序遍历、将有序数组转换为二叉搜索树、验证二叉搜索树、二叉搜索树中第K小的元素、二叉树的右视图
【代码】LC-二叉树的层序遍历、将有序数组转换为二叉搜索树、验证二叉搜索树、二叉搜索树中第K小的元素、二叉树的右视图。原创 2025-02-18 12:06:53 · 384 阅读 · 0 评论 -
LC-二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树、二叉树的直径
O(N) (每个节点访问一次)O(N) (最坏情况下递归栈深度为 O(N))原创 2025-02-16 20:28:58 · 453 阅读 · 0 评论 -
LC-随机链表的复制、排序链表、合并K个升序链表、LRU缓存
为了在时间复杂度内解决这个问题,并且使用A'B'C'ABCrandomrandomrandom。原创 2025-02-16 20:28:44 · 886 阅读 · 0 评论 -
LC-合并两个有序链表、两数相加、删除链表的第N个节点、两两交换链表中的节点、K个一组翻转链表
【代码】LC-合并两个有序链表、两数相加、删除链表的第N个节点、两两交换链表中的节点、K个一组翻转链表。原创 2025-02-14 20:32:40 · 641 阅读 · 0 评论 -
LC-搜索二维矩阵II、相交链表、反转链表、回文链表、环形链表、环形链表ll
方法:从右上角开始搜索 相交链表双指针法两个指针分别指向两个链表的头节点: 我们设立两个指针 和 ,分别指向链表 和链表 的头节点。同时移动两个指针:相遇: 如果两个指针相遇,则返回相遇的节点;如果两个指针同时指向 ,则说明链表没有交点。这种方法的核心思想就是“同步走,互相切换”,确保两个指针走过相同的路程,因此可以在 O(m + n) 时间复杂度内解决问题。设「第一个公共节点」为 node ,「链表 headA」的节点数量为 a ,「链表 headB」的节点数量为 b ,「两链表的公共原创 2025-02-14 18:20:24 · 1262 阅读 · 0 评论 -
LC-除自身以外数组的乘积、缺失的第一个正数、矩阵置零、螺旋矩阵、旋转图像
对于每个元素nums[i],要求出nums[i]nums[i]nums[i]原创 2025-02-13 11:42:20 · 397 阅读 · 0 评论 -
LC-滑动窗口最大值、最小覆盖子串、最大子数组和、合并区间、轮转数组
我们可以使用来高效地解决滑动窗口最大值问题。原创 2025-02-11 20:03:47 · 680 阅读 · 0 评论 -
LC-三数之和、接雨水、无重复字符的最长子串、找到字符串中所有字母异位词
解题思路排序:遍历数组,固定一个数:双指针寻找满足条件的三元组:去重: 接雨水解法步骤定义左右双指针:移动较矮一端的指针:雨水计算:无重复字符的最长子串使用 滑动窗口(Sliding Window)来优化解法,避免 的暴力遍历,做到 O(N) 线性时间复杂度。定义双指针窗口:移动右指针 扩大窗口:继续移动 指针,直到遍历完整个字符串。找到字符串中所有字母异位词字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。解题思路:滑动窗口 + 哈希原创 2025-02-10 19:42:04 · 671 阅读 · 0 评论 -
LC-两数之和、字母异位词分组、最长连续序列、移动零、盛最多水的容器
直到左右指针相遇。原创 2025-02-09 22:07:51 · 944 阅读 · 0 评论