- 博客(246)
- 收藏
- 关注
原创 力扣 647. 回文子串
647. 回文子串给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。回文字符串是正着读和倒过来读一样的字符串。子字符串是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:s = "abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:s ...
2023-05-23 20:07:00
258
原创 力扣 72. 编辑距离
72. 编辑距离给你两个单词word1和word2,请返回将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse...
2023-05-16 18:48:00
287
原创 123. 买卖股票的最佳时机 III [dp]
123. 买卖股票的最佳时机 III给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入:prices = [3,3,5,0,0,3,1,4]输出:6解释:在第 4 天(股票价格 = 0)的时候买入,在第 6...
2023-05-12 14:52:00
255
原创 力扣 968. 监控二叉树
968. 监控二叉树给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例 1:输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。示例 2:输入:[0,0,null,0,null,0,null,null,0]输出:2解释:需要至少两...
2023-05-08 22:29:00
224
原创 力扣 763. 划分字母区间
763. 划分字母区间给你一个字符串s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是s。返回一个表示每个字符串片段的长度的列表。示例 1:输入:s = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca"、"d...
2023-04-25 16:27:00
45
原创 力扣 56. 合并区间
56. 合并区间以数组intervals表示若干个区间的集合,其中单个区间为intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]...
2023-04-24 14:56:00
128
原创 力扣 435. 无重叠区间
435. 无重叠区间给定一个区间的集合intervals,其中intervals[i] = [starti, endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。示例 1:输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: intervals =...
2023-04-23 13:03:00
59
原创 力扣 452. 用最少数量的箭引爆气球
452. 用最少数量的箭引爆气球有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组points,其中points[i] = [xstart, xend]表示水平直径在xstart和xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为...
2023-04-22 23:08:00
58
原创 力扣 55. 跳跃游戏
55. 跳跃游戏给定一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例2:输入:nums = [3,2,1...
2023-04-21 17:28:00
44
原创 力扣 406. 根据身高重建队列
406. 根据身高重建队列假设有打乱顺序的一群人站成一个队列,数组people表示队列中一些人的属性(不一定按顺序)。每个people[i] = [hi, ki]表示第i个人的身高为hi,前面正好有ki个身高大于或等于hi的人。请你重新构造并返回输入数组people所表示的队列。返回的队列应该格式化为数组queue,其中queue[j] = [...
2023-04-21 15:52:00
67
原创 力扣 135. 分发糖果
135. 分发糖果n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目。示例1:输入:ratings = [1,0,2]输出:5解释:你可以分别给第一个、第二个、第三...
2023-04-21 00:03:00
42
原创 力扣 121. 买卖股票的最佳时机;122. 买卖股票的最佳时机 II;714. 买卖股票的最佳时机含手续费...
121. 买卖股票的最佳时机给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。示例 1:输入:[7,1,5,3,6,4]输出:5...
2023-04-11 12:19:00
45
原创 力扣 674. 最长连续递增序列
674. 最长连续递增序列给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。连续递增的子序列可以由两个下标l和r(l < r)确定,如果对于每个l <= i < r,都有nums[i] < nums[i + 1],那么子序列[nums[l], nums[l + 1], ..., nums[r - 1], nums[...
2023-04-10 21:09:00
42
原创 力扣 53. 最大子数组和
53. 最大子数组和给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nu...
2023-04-10 11:31:00
48
原创 力扣 738. 单调递增的数字
738. 单调递增的数字当且仅当每个相邻位数上的数字x和y满足x <= y时,我们称这个整数是单调递增的。给定一个整数n,返回小于或等于n的最大数字,且数字呈单调递增。示例 1:输入: n = 10输出: 9示例 2:输入: n = 1234输出: 1234示例 3:输入: n = 332输出: 299提示:0 <= n...
2023-04-09 13:30:00
122
原创 力扣 面试题 10.11. 峰与谷
面试题 10.11. 峰与谷在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例:输入: [5, 3, 1, 2, 3]输出:[5, 1, 3, 2, 3]提示:nums.le...
2023-04-06 15:50:00
118
原创 力扣 376. 摆动序列
376. 摆动序列如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如,[1, 7, 4, 9, 2, 5]是一个摆动序列,因为差值(6, -3, 5, -7, 3)是正负交替出现的。相反,[1, 4, 7, 2, 5]和[1, 7, 4...
2023-04-06 12:31:00
53
原创 力扣 51. N 皇后
51. N 皇后按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个不同的n 皇后问题的棋子放置方案,该方案中'Q'和'.'分别代表了皇后和空位。示例 1:输入...
2023-03-28 20:03:00
111
原创 力扣 90. 子集 II [先导题:47. 全排列 II和78. 子集]
90. 子集 II给你一个整数数组nums,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。返回的解集中,子集可以按任意顺序 排列。示例 1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 &l...
2023-03-28 15:47:00
50
原创 力扣 78. 子集
78. 子集给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 &l...
2023-03-28 14:52:00
51
原创 力扣 93. 复原 IP 地址
93. 复原 IP 地址有效 IP 地址正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。例如:"0.1.2.201"和"192.168.1.1"是有效IP 地址,但是"0.011.255.245"、"192.168.1.312"和"192.168@1.1"是无效IP 地址。给定一个只包含数字的字符...
2023-03-27 19:11:00
32
原创 力扣 131. 分割回文串
131. 分割回文串给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。回文串是正着读和反着读都一样的字符串。示例 1:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]示例 2:输入:s = "a"输出:[["a"]]提示:1 <= s.length <= 16s...
2023-03-26 15:23:00
45
原创 力扣 216. 组合总和 III
216. 组合总和 III找出所有相加之和为n的k个数的组合,且满足下列条件:只使用数字1到9每个数字最多使用一次返回所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]解释:1 + 2 + 4 = 7没有其他符合的组合了。示例 2:输入: k =...
2023-03-25 22:51:00
51
原创 力扣 47. 全排列 II
47. 全排列 II给定一个可包含重复数字的序列nums,按任意顺序返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]提示:1 &...
2023-03-21 14:30:00
35
原创 力扣 46. 全排列 [设置/不设置 标志数组]
46. 全排列给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]...
2023-03-20 00:35:00
38
原创 构造AVL树基础 + 力扣1382. 将二叉搜索树变平衡
构造AVL树基础定义对于任意一个节点,左子树和右子树的高度差不能超过1。怎么计算标注节点的高度计算平衡因子如何维持平衡如果平衡被打破需要根据不同的情况来旋转修改树,如插入2后,原有的平衡被打破,节点8变得不平衡:左旋操作针对情况 RR插入的元素在不平衡的节点的右侧的右侧,即 RR对节点y进行向左旋转操作,返回旋转后的新的根节点x y ...
2023-02-10 15:43:00
54
原创 CSAPP 第三章家庭作业
CSAPP 第三章家庭作业参考了《深入理解计算机系统》第三版]: https://blog.youkuaiyun.com/weixin_47089544/article/details/124302414深入理解计算机系统(第三版)作业题答案(第三章)]: (https://www.cnblogs.com/machao/p/8471809.html深入理解计算机系统: http://doraemon...
2023-02-06 10:15:00
4050
原创 排序与链表 力扣[21. 合并两个有序链表,23. 合并K个升序链表,148. 排序链表]
21. 合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节...
2023-02-06 10:14:00
39
原创 力扣 1642. 可以到达的最远建筑 [堆]
1642. 可以到达的最远建筑给你一个整数数组heights,表示建筑物的高度。另有一些砖块bricks和梯子ladders。你从建筑物0开始旅程,不断向后面的建筑物移动,期间可能会用到砖块或梯子。当从建筑物i移动到建筑物i+1(下标从 0 开始)时:如果当前建筑物的高度大于或等于下一建筑物的高度,则不需要梯子或砖块如果当前建筑的高度小于下...
2023-01-27 14:38:00
60
原创 力扣 871. 最低加油次数 [堆]
871. 最低加油次数汽车从起点出发驶向目的地,该目的地位于出发位置东面target英里处。沿途有加油站,每个station[i]代表一个加油站,它位于出发位置东面station[i][0]英里处,并且有station[i][1]升汽油。假设汽车油箱的容量是无限的,其中最初有startFuel升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时...
2023-01-26 22:43:00
42
原创 力扣 264. 丑数 II [堆;多指针]
264. 丑数 II给你一个整数n,请你找出并返回第n个丑数。丑数就是只包含质因数2、3和/或5的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2:输入:n = 1输出:1解释:1 通常被视为丑数。提示:1 <= n <...
2023-01-26 20:50:00
45
原创 力扣 1439. 有序矩阵中的第 k 个最小数组和 [堆]
1439. 有序矩阵中的第 k 个最小数组和给你一个m* n的矩阵mat,以及一个整数k,矩阵中的每一行都以非递减的顺序排列。你可以从每一行中选出 1 个元素形成一个数组。返回所有可能数组中的第 k 个最小数组和。示例 1:输入:mat = [[1,3,11],[2,4,6]], k = 5输出:7解释:从每一行中选出一个元素,前 k 个和最小的数组分别是:...
2023-01-13 16:08:00
45
原创 力扣 373. 查找和最小的 K 对数字 [堆]
373. 查找和最小的 K 对数字给定两个以升序排列的整数数组nums1和nums2,以及一个整数k。定义一对值(u,v),其中第一个元素来自nums1,第二个元素来自nums2。请找到和最小的k个数对(u1,v1),(u2,v2)... (uk,vk)。示例 1:输入: nums1 = [1,7,11], nums2 = [2,4...
2023-01-12 17:42:00
52
原创 力扣 295. 数据流的中位数[堆]
295. 数据流的中位数中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如arr = [2,3,4]的中位数是3。例如arr = [2,3]的中位数是(2 + 3) / 2 = 2.5。实现 MedianFinder 类:MedianFinder()初始化MedianFinder对象。voi...
2023-01-11 00:05:00
125
原创 力扣 1046. 最后一块石头的重量[堆]
1046. 最后一块石头的重量有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎;如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石...
2023-01-09 16:15:00
30
原创 堆介绍与实现
堆介绍实现可以通过跳表、二叉堆。详细介绍来自Heap Tree最小堆积(Min heap):父节点小于等于子节点最大堆积(Max heap):父节点大于等于子节点(但是下一层的节点不一定比上一层的所有节点都小)基于数组实现二叉堆二叉堆是一棵完全二叉树,当前节点下标i和其父、子节点之间的关系为:parent(i) = i/2 l e f...
2023-01-09 16:10:00
39
原创 CSAPP,深入理解计算机系统原书第三版的第二章的课后习题[小白版]
前言本文是CSAPP,深入理解计算机系统原书第三版的第二章的课后习题,有加自己的一些理解,资源主要来自于:CSAPP-3E-Solution和深入理解计算机系统(第三版)作业题答案(第二章)和练习题:CSAPP Chapter2 Homework(已完结),非常感谢。2.55 在不同机器运行show_bytes#include<stdio.h>typedef unsign...
2023-01-08 21:21:00
1358
原创 力扣 501. 二叉搜索树中的众数
501. 二叉搜索树中的众数给你一个含重复值的二叉搜索树(BST)的根节点root,找出并返回 BST 中的所有众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按任意顺序返回。假定 BST 满足如下定义:结点左子树中所含节点的值小于等于当前节点的值结点右子树中所含节点的值大于等于当前节点的值左子树和右子树都是二叉搜索树示例 1:输入:...
2022-12-08 00:46:00
43
原创 力扣 230. 二叉搜索树中第K小的元素
230. 二叉搜索树中第K小的元素给定一个二叉搜索树的根节点root,和一个整数k,请你设计一个算法查找其中第k个最小元素(从 1 开始计数)。示例 1:输入:root = [3,1,4,null,2], k = 1输出:1示例 2:输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3提示:树中的节点数为n。...
2022-12-07 23:15:00
47
原创 力扣 99. 恢复二叉搜索树 [Morris]
99. 恢复二叉搜索树给你二叉搜索树的根节点root,该树中的恰好两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 的左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。示例 2:输入:root = [...
2022-12-05 17:47:00
55
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人