自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 收藏
  • 关注

原创 leetcode hot100 柱状图中的最大矩形

简单来说就是找到左边的距离他最近的最小的值,右边的距离他最小的值,然后计算当前矩形作为上边的最大矩形面积。个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2025-03-24 18:25:56 209

原创 leetcode hot100 反转链表

【代码】leetcode hot100 反转链表。

2025-03-20 22:11:16 69

原创 leetcode hot100 k个一组翻转链表

最麻烦的是前后的链接处的处理,这里给一个pre是最好的。

2025-03-20 15:06:39 80

原创 leetcode hot100 合并k个升序链表

请你将所有链表合并到一个升序链表中,返回合并后的链表。这个很简单,考虑合并两个链表,然后使用归并排序。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。

2025-03-18 21:35:20 260

原创 二叉树的中序遍历模板 包括递归,迭代,莫里斯遍历

记住遍历模板,走遍天下都不怕。

2025-03-12 16:06:47 115

原创 leetcode hot 100 41. 缺失的第一个正数

2. 当你把数换过来之后可能那个地方本来就已经有一个数占据位置了,也就是[1,1]的情况,这样会导致死循环,所以你需要把这种情况当做看不见。因为放到原处,也是一个不合理值,反正要放到的地方已经有合理值了。所以我们的方法是把符合条件的正整数也就是1-》len(nums)的数放到他的值减一的下标处,这样遍历一遍就知道少了哪个了。1. 当你把一个数换过去之后,换回来的数还需要继续换,所以我们的for里面用while处理。,请你找出其中没有出现的最小的正整数。范围 [1,2] 中的数字都在数组中。

2025-02-28 19:07:23 254

原创 leetcode hot 100 76. 最小覆盖子串

这里我们可以使用第一种方法表示的是最好解法,这里的need对于t之中的东西,在满足之后会为0,但是对于不需要的东西如果在里面会是负数。按照这个特性我们写了代码。总的逻辑可以说是,right一直向右加,直到满足t,然后left加直到不满足t这个时候记录res,直到right到达边界停止。最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。所有字符的子串,则返回空字符串。所有字符的最小子串。

2025-02-28 17:37:09 156

原创 leetcode hot 100 239. 滑动窗口最大值

主要难点是原本复杂度是nk,现在我想变成n,怎么办呢,自己设计一个有限队列,保存最大的元素,设计oush和pop的算法。push逻辑是push一个吧前面比他小的删除,pop的逻辑是判断队伍第一个是不是该pop的元素,如果是就pop。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置 最大值。滑动窗口每次只向右移动一位。

2025-02-28 15:59:21 266

原创 leetcode hot 100 42. 接雨水

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。第一我们要知道如何计算每一个地点的雨水数量。第二计算右侧的最高点需要使用动态规划的算法。个非负整数表示每个宽度为。面试中遇到过这道题?

2025-02-27 17:20:41 306

原创 leetcode hot 100 只出现一次的数字

除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。所以全部异或一遍之后就是奇数出现的东西的乘积。亦或运算的性质就是 对于0 异或之后是本身。python的异或就是^对于本身 异或之后是0。

2025-01-04 18:22:25 299

原创 leetcode hot100 最长公共子序列

是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。是这两个字符串所共同拥有的子序列。,返回这两个字符串的最长。这个最难的就是找到递推关系。

2025-01-04 16:48:40 114

原创 leetcode hot 100 不同路径

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。问总共有多少条不同的路径?这个就是很简单的地推。

2025-01-04 16:10:51 284

原创 leetcode hot 100 分割等和子集

这里我们最重要的是把她理解成一个背包问题,分割连哥哥一个样的,实际就是在里面挑选总和的一半,而且每个数字只能选择一次。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

2025-01-04 16:02:09 239

原创 leetcode hot100 乘积最大子数组

(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。由于又正负值的存在,所以这里就要加上一个最小值。,请你找出数组中乘积最大的非空连续。测试用例的答案是一个。

2025-01-04 15:36:08 235

原创 leetcode hot 100 最长递增子序列

是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。最重要的一点就是地推公式的定义,我们定义的是以n结尾的最长子序列。,找到其中最长严格递增子序列的长度。

2025-01-04 15:22:57 272

原创 leetcode hot 100 单词拆分

不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。如果可以利用字典中出现的一个或多个单词拼接出。找到递推公式就很简单了。

2025-01-04 14:37:25 214

原创 leetcode hot 100 完全平方数 背包问题

这个是背包问题的一种,当我们得到可以使用的完全平方数之后,这就是总数n就是背包容量,可用的数字就是东西。是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。我们必须把背包填满,而且每个物品可以拿多次。的完全平方数的最少数量。

2025-01-04 14:10:32 216

原创 leetcode hot 小偷

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,给定一个代表每个房屋存放金额的非负整数数组,计算你。,一夜之内能够偷窃到的最高金额。

2025-01-01 19:18:32 296

原创 leetcode hot 100 杨辉三角

在「杨辉三角」中,每个数是它左上方和右上方的数的和。生成「杨辉三角」的前 numRows。给定一个非负整数 numRows。

2025-01-01 19:17:53 296

原创 leetcode hot 100 划分字母区间

这个很简单的贪心算法,也就是遍历一遍,然后看看遍历内的东西最远额能到哪里,如果遍历到达了之前的元素到达的最远,那就是一个划分。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是。返回一个表示每个字符串片段的长度的列表。

2025-01-01 18:52:49 316

原创 leetcode hot 100 跳跃游戏2

向前跳转的最大长度。生成的测试用例可以到达。保存一个队列,是上一次能到达的最远距离。处,你可以跳转到任意。

2025-01-01 17:36:35 378

原创 leetcode hot 100 跳跃游戏

这里实际上很简单,就是遍历一遍,然后把能够到达的地方设为true,然后对于能到的地方再看他能到的最远。更简单的方法是意识到,到达的最远其实就行了,因为他是一步步跳的,所以最远的前面所有各自都能跳。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。给你一个非负整数数组。

2025-01-01 17:12:56 352

原创 leetcode hot100 买卖股票的最佳时间

这里我们的思路是,要得到哪一天最多的利润,实际上就是对于每一天来说,后面的天数里面的最高价格就是我们要卖的价格,所以我们保存一个变量max_prices保存的就是对于i来说【i:】的里面的最高价格,他最差是i本身。然后我们对于每个i用后面的最大的价格去减,得到的就是每天的profit,然后从这个profit里面得到一个最大值返回。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。买入这只股票,并选择在。

2025-01-01 16:41:15 133

原创 leetcode hot 100 前k个高平元素

主要是要知道这里需要使用的是堆,而且求最大的几个就是最小堆,因为每次都是把最小的给扔出来,这样才是位置最大的几个。不需要最前面搞个空的东西其实。,请你返回其中出现频率前。

2025-01-01 16:19:00 385

原创 leetcode hot100 每日温度

使用栈,每次遇到更高的就pop遇不到就放入。两个点,第一个是一开始的res就可以全0,然后需要放入的按照index放入就行。第二个是其实可以用for i 因为都是便利一遍里面在加上while来处理pop多次的情况就行。天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。,表示每天的温度,返回一个数组。

2024-12-31 17:12:43 308

原创 leetcode hot100 字符串解码

上述是我自己的解法,主要解决的是括号里面还有括号的情况,就用迭代的方法解决,每次都返回括号内的输出结果,在呈上次数,缺点是需要提前的把括号的前后index准备好。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数。给定一个经过编码的字符串,返回它解码后的字符串。这个是标准代码,直接把所有的迭代放到一起了。,表示其中方括号内部的。

2024-12-31 16:32:37 268

原创 leetcode hot100 最小栈

操作,并能在常数时间内检索到最小元素的栈。

2024-12-31 12:11:47 394

原创 leetcode hot 100 单词搜索

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。这里我们的结构是使用dfs回溯遍历,因为每次开始之后遍历完之后visted需要变回原样。# o(mnkk)的就是遍历一遍找到开头,对所有开头左dfs。

2024-12-28 12:14:10 657

原创 leetcode hot100 括号生成

一:看做二叉树,dfs遍历一遍,左右分别是括号两边,寻找的条件是左括号不超过n,有括号比左括号少,知道匹配。二:动态规划,最左边的括号一定是(,这样f(n)可以递归为 (f(i))+f(n-1-i)代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。

2024-12-28 05:05:21 673

原创 leetcode hot 100搜索回溯

需要注意的是,candidates需要每次只能搜索到后面的dfs(target,current,current_list,candidates[index:])# 当成一棵树来遍历回溯条件是大于target。如果至少一个数字的被选数量不同,则两种组合是不同的。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。

2024-12-27 22:30:01 419

原创 leetcode hot 全部子集

返回该数组所有可能的。

2024-12-27 22:10:58 214

原创 leetcode hot 100 全排列

第二种是 使用n次n-1的全排列,然后遍历一遍数组,每次都把遍历的数组的数放到n-1全排列的的最前面。一种是只用n-1的全排列,n可以放到n-1全排列序列的任意一个位置。这个最少的世界复杂度都是阶乘,最终返回的结果的数目也是阶乘的级别的。给定一个不含重复数字的数组。

2024-12-27 21:31:39 413

原创 leetcode hot 100 二叉搜索

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。记住这里的方法,lr复制,然后条件为l<=r ,然后l=mid+1 r=mid-1最终是可以通过的。请必须使用时间复杂度为。

2024-12-27 21:12:14 411

原创 leetcode hot100 tire前缀树

是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。使用前缀树来做,就是直接的把一个treenode变为next是一个alpha dict就行了。在保存一个bool值判断到这里是不是一个词语。(发音类似 "try")或者说。

2024-12-27 20:54:03 860

原创 leetcode hot100 腐烂的橘子

bfs主要用于解决最短路径的问题,这个最短时间也是一样的。直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。# 腐烂时间,实际上就是广度优先搜索的深度。# 找到 所有 的腐烂句子当做其实节点。这里使用bfs来做,把每一层抽象成腐烂句子就行了。的新鲜橘子都会腐烂。

2024-12-27 20:25:25 646

原创 leetcode hot100 岛屿数量

注意我这里的实现不是很好,我用了index record保存,其实只需要在遍历的时候if grid==1 num++就行了,因为dfs运行的时候会把grid处理好的。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。# 最笨的就是o(n)可以直接遍历,然后上下左右是水的就是岛屿。(水)组成的的二维网格,请你计算网格中岛屿的数量。这里使用小岛dfs,直接的遍历,边界条件是。此外,你可以假设该网格的四条边均被水包围。3.到达已经访问过的岛屿。

2024-12-27 04:14:54 341

原创 leetcode hot100 二叉树的最近公共祖先

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2024-12-26 21:39:07 314

原创 leetcode hot100 路径总和

这里我们需要的是一个非常牛逼的方法,也就是使用深度优先搜索,记录一个前缀和,然后在每次搜索的时候,之保留搜索这条路上的前缀和,这样子计算路径的时候只要把当前的路径前去任意一个前缀和的结果和target对上就行。不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点),求该二叉树里节点值之和等于。笨方法是直接遍历,深度搜索两次。给定一个二叉树的根节点。

2024-12-26 21:14:55 347

原创 leetcode hot100

不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。简单算法是遍历一遍所有节点,然后去搜索这个节点开始的所有路径的总和是不是符合条件。,求该二叉树里节点值之和等于。给定一个二叉树的根节点。

2024-12-25 22:46:13 491

原创 二叉树的右视图

应该用深度优先搜索,你想想那个图就知道了只要每次记录depth即可。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。这个利用到dfs,考虑dfs的遍历顺序,其实加上height就可以了。

2024-12-25 21:56:40 462

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除