自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 lc.105 从前序与中序遍历序列构造二叉树

因此,[i_start, root_i_index-1] 和 [i_start, root_i_index] 在这里实际上是等价的,因为 root_i_index 不会超过 i_end。因此,当 p_start 指向某个节点时,它的左子树节点一定在 p_start + 1 到 p_start + leftnum 的范围内,其中 leftnum 是左子树节点的数量。在这个二叉树构建的问题中,选择 p_start >= p_end 作为边界条件是因为前序遍历数组中,每个节点的左子树都是直接跟在它后面的。

2023-12-03 20:03:33 108

原创 lc.79 单词搜索 回溯

正文给定一个 m x n 二维字符网格 board 和一个字符串单词 word。如果 word 存在于网格中,返回 true;否则,返回 false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。来源:leetcode_hot100_79。

2023-11-28 17:25:30 87

原创 lc.96 不同的搜索二叉树 卡特兰数

要算G(n)就需要G(0)~G(n-1)所有的值,for(int i=2;i++)存在的意义是为了G(i)模拟算出G(0)到G(n-1)所有的值。给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。j++)从左子树只有一个节点算起,遍历左子树从小到大的过程中的所有子树组合情况。来源:leetcode_hot100_96。

2023-11-28 17:20:59 133

原创 lc78子集 回溯

由于 Java 中的集合是对象引用的集合,这意味着每次更改 path 时,添加到 list 中的所有实例也会受到影响。如果使用 startindex+1 而不是 i+1,将导致在递归调用中始终从当前的 startindex + 1 开始,而不考虑内部循环中的 i。这样会导致生成的子集出现重复,因为每次都是从 startindex + 1 开始,而不是从当前的 i + 1。输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]输出:[[],[0]]

2023-11-27 14:01:46 73

原创 lc.75颜色分类

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。从左向右遍历,当当前下标i已经和b重合时证明整个数组中遍历过的当然是已经有序的,没遍历的右边全是2,因此整体都有序了。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。初始时r在-1的位置,b在length的位置,都在数组外面。输入:nums = [2,0,2,1,1,0]输入:nums = [2,0,1]输出:[0,0,1,1,2,2]输出:[0,1,2]

2023-11-21 21:04:23 25

原创 lc.72编辑距离

当 word1[i] == word2[j],dp[i][j] = dp[i-1][j-1],由于这一位相同,所以这一位不需要操作,只需要将前面的改相同即可;其中,dp[i-1][j-1] 表示替换操作,dp[i-1][j] 表示删除操作,dp[i][j-1] 表示插入操作。dp[i][j] 代表 word1 到 i 位置转换成 word2 到 j 位置需要最少步数。

2023-11-21 17:20:33 18

原创 lc.64

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]这里的f就不是路径个数了,就是从起点到这个块为止的最小和。输入:grid = [[1,2,3],[4,5,6]]解释:因为路径 1→3→1→1→1 的总和最小。思路:和lc62差不多,就是多了一个二维数组罢了。来源:leetcode_hot100_64。说明:每次只能向下或者向右移动一步。

2023-11-20 22:33:43 17

原创 lc62.不同路径

机器人试图达到网格的右下角(在下图中标记为 “Finish” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。思路:到每一个块的路径数=从上面来的路径数+从左边来的路径数。从左上角开始,总共有 3 条路径可以到达右下角。来源:leetcode_hot100_62。同时到达左上边界任一块路径数都为1。输入:m = 3, n = 2。输入:m = 7, n = 3。输入:m = 3, n = 3。问总共有多少条不同的路径?思路:25*9就会超时。

2023-11-20 16:05:49 30

原创 lc56.合并区间

2.讨论分那么多种情况其实一个判断intervals[i][1]>=intervals[j][0]加一个赋值intervals[i][1]=max(intervals[i][1],intervals[j][1])就能总结。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]输出:[[1,5]]

2023-09-21 14:33:53 45

原创 力扣_跳跃游戏

有0才会不能到达吧,最小是1的话怎样都能到了(一步一步跳也行啊)。不仅有0,还得有一些条件就让他们都刚好到0才行,不然都跳过了也走得通。而且有可能会有多个0[3,2,0,0,4]这样,第一个0无伤大雅但第二个0致命一击。解释:无论怎样,总会到达下标为 3 的位置。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]

2023-03-21 22:51:03 52

原创 最大子数组和

思路:官方写的特别好,将整个区间[l,r]分成左右两个子区间分别获得这个区间的四个值,然后递归,这四个值就可以把递归所需要用的都涵盖了。如果之前的阶段求解的子问题的结果包含了一些不确定的信息,导致了后面的阶段求解的子问题无法得到,或者很难得到,这叫「有后效性」。思路:动态规划,遍历数组,记录每个到下标i为止,以下标i为结束位置(包含nums[i])的最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。分治法错解但错不在分治。

2023-03-20 21:22:27 38

原创 字母异位词分组

思路:使用哈希表的思维,虽然他们顺序不一样,但同一组的他们所含字母数相同,可利用各字母数量或排序好的规定字符作为哈希表的key值,所有排序后为key的字符串的vector数组为其value。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。输出: [[“”]]

2023-03-19 16:17:24 36

原创 leetcode_n皇后_经典回溯

的,即全排列的每个值顺序代表在棋盘格的位置,例如[1,2,3,4]即代表[“Q…每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。解释:如上图所示,4 皇后问题存在两个不同的解法。输出:[[“Q”]]

2023-03-19 15:19:38 42

原创 旋转图像_多解

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]给定一个 n × n 的二维矩阵 matrix 表示一个图像。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]旋转图像,这意味着你需要直接修改输入的二维矩阵。) 空间复杂度:O(N)

2023-03-18 19:49:31 31

原创 全排列_全排列Ⅱ

思路:利用值传递nums,每次用了什么值到下一层之前就删掉(但每次搞完都忘了还回去,没有执行撤销操作),怎么不算回溯呢✌,具体代码的注释见正解二。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。输出:[[0,1],[1,0]]一种初始化成员变量方法。

2023-03-18 17:20:46 56

原创 组合总数_

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。2 和 3 可以形成一组候选,2 + 2 + 3 = 7。输入:candidates = [2,3,6,7], target = 7。输入: candidates = [2,3,5], target = 8。输出: [[2,2,2,2],[2,3,3],[3,5]]输出:[[2,2,3],[7]]

2023-03-17 22:05:40 71

原创 搜索旋转排序数组

旋转下二分

2023-03-13 22:27:36 54

原创 下一个排列

下一个排列

2023-03-13 20:32:25 30

原创 括号生成_

括号生成

2023-03-13 17:28:01 34

原创 删除链表的倒数第N个结点

删除链表的倒数第n个结点

2023-03-12 22:05:34 39

原创 合并二叉树

传址传参

2023-03-12 21:14:57 162

原创 汉明距离_

__builtin_popcount()计算二进制表达中 1 的数量

2023-03-12 12:57:36 42

原创 找到所有数组中消失的数字

好怪的一个、

2023-03-11 22:33:30 111

原创 比特位计数

比特位计数

2023-03-11 17:29:40 25

原创 移动零_erase

移动0

2023-03-11 16:56:27 32

原创 回文链表_

回文链表

2023-03-10 20:14:40 35

原创 翻转二叉树

翻转二叉树

2023-03-10 17:22:14 29

原创 反转链表_多解

反转链表

2023-03-09 21:38:36 41

原创 多数元素_map

多数元素

2023-03-09 15:12:34 24

原创 相交链表_两种方法

相交链表

2023-03-09 13:21:01 50

原创 环形链表_O(n)_O(1)

环形链表_哈希表_快慢指针

2023-03-08 20:56:40 33

原创 只出现一次的数字

只出现一次的数字

2023-03-07 21:31:23 26

原创 买卖股票的最佳时期

买卖股票的最佳时机

2023-03-07 20:59:06 28

原创 对称二叉树

对称二叉树

2023-03-07 16:15:25 22

原创 二叉树的中序遍历

二叉树的中序遍历

2023-03-06 15:50:22 31

原创 爬楼梯_fib

爬楼梯

2023-03-06 10:10:36 25

原创 合并两个有序链表

合并两个有序链表

2023-03-05 21:57:15 25

原创 二叉树的直径

二叉树直径

2023-03-05 15:20:33 32

原创 有效的括号

有效括号

2023-03-04 15:13:32 20

原创 电话号码的字母组合

电话号码的字母组合

2023-03-03 21:40:07 127

空空如也

空空如也

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

TA关注的人

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