- 博客(7)
- 收藏
- 关注
原创 leetcode 322. 零钱兑换
题意要求计算从给定的不同面额的硬币数组中能凑成总金额所需要的最少硬币个数,如果没有任何一种硬币能组成总金额,则返回-1,并且硬币的数量是无限的,因此本题可以看成是一个完全背包问题
2024-07-25 10:18:09
281
原创 leetcode 45. 跳跃游戏 II
如果当前的最大覆盖范围能够覆盖到数组的最后一个元素,那么就可以到达终点;如果不能,每次遍历到当前覆盖范围的末端时,增加步数并将当前覆盖范围更新为下一个最大覆盖范围(首先本题要考虑步数在什么时候才要进行加1,当前的最大覆盖范围决定了当前步数能达到的最远位置,而下一个最大覆盖范围(已经覆盖到或超过了数组的最后一个元素,返回当前步数。),直到覆盖数组的最后一个元素,从而得到最少的步数。如果遍历完数组但仍未覆盖到最后一个元素,返回步数。为当前索引加上当前元素值,即。
2024-07-24 18:00:15
425
原创 leetcode 33. 搜索旋转排序数组
首先题目要求实现一个算法复杂度为O(log n) 的算法,因为是排序好的数组,可以采用二分法找到旋转点,然后确定区间,再使用一次二分法查找目标值;一共使用两次二分法,所以时间复杂度为O(logn)
2024-07-23 16:14:19
2190
原创 leetcode 416. 分割等和子集
首先本题可以将判断这个数组是否可以分割成两个子集的问题转换为集合中是否存在和为。是数组所有元素的和,可以发现这是一个0-1背包问题,因为每个元素只能使用一次。
2024-07-17 15:00:53
215
原创 leetcode 108.将有序数组转换为二叉搜索树
主要通过寻找分割点,将分割点作为当前节点,然后递归左区间和右区间,因为是有序数组,因此将数组中间位置作为分割点,当分割的数组长度为偶数时,中间节点有两个,取不同的中间节点会得到不同的二叉搜索树。每次取区间的中间值作为分割点,当区间长度为偶数时,中间位置有两个,选择较小的一个。生成的右子树赋给当前节点的右子节点。最后返回当前构建的节点作为该子树的根节点。进行相同的操作,生成的左子树赋给当前节点的左子节点,同理右半部分区间。确定递归终止条件, 当左边界大于右边界时,当前区间无效,返回空节点。
2024-07-15 13:41:30
294
1
原创 leetcode 138 随机链表的复制
采用哈希表来存储原链表和拷贝链表的映射关系,分别对原链表的节点和边进行拷贝。最后返回拷贝节点的头结点。时间复杂度:O(n)空间复杂度:O(n)
2024-07-15 10:05:24
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人