![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode题解(C++)
和我一起刷算法题
学IT的细胞膜
记录学习编程之路
展开
-
200,岛屿数量
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。原创 2024-06-02 16:54:42 · 114 阅读 · 0 评论 -
199,二叉树的右视图
想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。原创 2024-06-02 16:43:50 · 208 阅读 · 0 评论 -
198,打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。给定一个代表每个房屋存放金额的非负整数数组,计算你。,一夜之内能够偷窃到的最高金额。原创 2024-06-02 16:32:44 · 98 阅读 · 0 评论 -
191,位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中。中,共有 3 个设置位。中,共有 1 个设置位。循环检测每一位是否为1.原创 2024-05-28 15:50:36 · 174 阅读 · 0 评论 -
190,颠倒二进制位
因此返回 964176192,其二进制表示形式为。颠倒给定的 32 位无符号整数的二进制位。原创 2024-05-26 15:19:05 · 244 阅读 · 0 评论 -
189,轮换数组
向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]用一个辅组的数组,这种方法很无脑。,将数组中的元素向右轮转。原创 2024-05-26 15:13:25 · 169 阅读 · 0 评论 -
188,买卖股票的最佳时机
随后,在第 5 天 (股票价格 = 0) 的时候买入,在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3。在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4。在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。原创 2024-05-26 15:04:54 · 101 阅读 · 0 评论 -
187,重复的DNA序列
返回所有在 DNA 分子中出现不止一次的。时,识别 DNA 中的重复序列非常有用。的序列(子字符串)。由一系列核苷酸组成,缩写为。原创 2024-05-26 14:55:28 · 165 阅读 · 0 评论 -
186,反转字符串中的单词II
的定义为:单词是一个由非空格字符组成的序列。解法来解决此问题,即不分配额外的空间。中的单词将会由单个空格分隔。原创 2024-05-26 14:51:07 · 96 阅读 · 0 评论 -
179,最大数
重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。输出结果可能非常大,所以你需要返回一个字符串而不是整数。原创 2024-05-24 16:53:56 · 88 阅读 · 0 评论 -
174,地下城游戏
任何房间都可能对骑士的健康点数造成威胁,也可能增加骑士的健康点数,包括骑士进入的左上角房间以及公主被监禁的右下角房间。如果骑士遵循最佳路径:右 -> 右 -> 下 -> 下 ,则骑士的初始健康点数至少为 7。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为。的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。个房间组成的二维网格。),要么包含增加骑士健康点数的魔法球(若房间里的值为。原创 2024-05-24 16:46:42 · 272 阅读 · 0 评论 -
173,二叉搜索树迭代器
注意,指针初始化为一个不存在于 BST 中的数字,所以对。时,BST 的中序遍历中至少存在一个下一个数字。的首次调用将返回 BST 中的最小元素。调用总是有效的,也就是说,当调用。实现一个二叉搜索树迭代器类。原创 2024-05-24 16:35:28 · 238 阅读 · 0 评论 -
172,阶乘后的零
这本质上是一个数学题,我不解释了,因为我也不懂数学原理。= 120 ,有一个尾随 0。= 6 ,不含尾随 0。结果中尾随零的数量。原创 2024-05-24 16:26:48 · 179 阅读 · 0 评论 -
171,Excel 表列序号
表示 Excel 表格中的列名称。一个将26进制数转化为10进制数的问题。该列名称对应的列序号。原创 2024-05-24 16:21:22 · 149 阅读 · 0 评论 -
170,两数之和
/ 没有两个整数加起来等于 7 ,返回 false。设计一个接收整数流的数据结构,该数据结构支持检查是否存在两数之和等于特定值。// 1 + 3 = 4,返回 true。这道题比较简单,插入数据和查找数据。原创 2024-05-24 16:14:37 · 203 阅读 · 0 评论 -
169,多数元素
你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。多数元素是指在数组中出现次数。原创 2024-05-23 20:26:25 · 151 阅读 · 0 评论 -
168,Excel表列名称
类似于数的进制转化,把一个10进制数转化为26进制数。,返回它在 Excel 表中相对应的列名称。原创 2024-05-23 20:21:02 · 173 阅读 · 0 评论 -
169,两数之和II
2 与 7 之和等于目标数 9。因此 index1 = 1, index2 = 2。返回 [1, 2]。你所设计的解决方案必须只使用常量级的额外空间。,请你从数组中找出满足相加之和等于目标数。如果设这两个数分别是。这题和第一题很像,这里用了双指针。的形式返回这两个整数的下标。以长度为 2 的整数数组。重复使用相同的元素。原创 2024-05-23 20:12:19 · 186 阅读 · 0 评论 -
166,分数到小数
这道题考察大数运算,所有的大数运算都是通过字符串相关方法实现的。如果小数部分为循环小数,则将循环的部分括在括号内。给定两个整数,分别表示分数的分子。如果存在多个答案,只需返回。答案字符串的长度小于。对于所有给定的输入,原创 2024-05-23 20:06:01 · 193 阅读 · 0 评论 -
165,比较版本号
version1 的第二个修订号为 "2",version2 的第二个修订号为 "10":2 < 10,所以 version1 < version2。依次比较它们的修订号。如果其中一个版本字符串的修订号较少,则将缺失的修订号视为。原创 2024-05-23 19:54:19 · 172 阅读 · 0 评论 -
164,最大间距
其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。趁这道题小伙伴们可以复习一下几个排序方法。这道题思路还是很简单,排序后找最大间距。数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回。排序后的数组是 [1,3,6,9]原创 2024-05-23 19:46:21 · 170 阅读 · 0 评论 -
163,缺失的区间
的任何元素都不在任何区间内,并且每个缺失的数字都在其中一个区间内。,其中元素的范围在闭区间。原创 2024-05-21 14:22:34 · 125 阅读 · 0 评论 -
160,相交链表
请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回。,函数返回结果后,链表必须。整个链式结构中不存在环。给你两个单链表的头节点。原创 2024-05-21 14:14:02 · 145 阅读 · 0 评论 -
162,寻找峰值
你的函数可以返回索引 1,其峰值元素为 2;或者返回索引 5, 其峰值元素为 6。,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回。3 是峰值元素,你的函数应该返回其索引 2。峰值元素是指其值严格大于左右相邻值的元素。所在位置即可”这句话就让这题有很多解。这题本身其实有点BUG, “返回。你必须实现时间复杂度为。的算法来解决此问题。原创 2024-05-21 14:09:48 · 180 阅读 · 0 评论 -
161,相隔为 1 的编辑距离
可以将 'c' 插入字符串。,如果它们的编辑距离为。原创 2024-05-21 13:59:32 · 173 阅读 · 0 评论 -
159,至多包含两个不同字符的最长子串
满足题目要求的子串是 "ece" ,长度为 3。的最长子串,并返回该子串的长度。原创 2024-05-21 13:51:43 · 161 阅读 · 0 评论 -
158,用 Read 读取 N 个字符II
/ 调用 read 方法后,buf 应该包含 “a”。我们从文件中总共读取了 1 个字符,所以返回 1。// 现在 buf 应该包含 "bc"。我们从文件中总共读取了 2 个字符,所以返回 2。// 我们已经到达文件的末尾,不能读取更多的字符。假设已经分配了 buf ,并保证有足够的空间存储文件中的所有字符。原创 2024-05-19 15:17:38 · 135 阅读 · 0 评论 -
157,用 Read4 读取 N 个字符
当执行你的 read 方法后,buf 需要包含 "abc"。注意 "abc" 是文件的内容,不是 buf 的内容,buf 是你需要写入结果的目标缓存区。注意: buf4[] 是目标缓存区不是源缓存区,read4 的返回结果将会复制到 buf4[] 当中。这道题算是我们遇到的一种全新的题型,我们得到一个API,知道这个API的用法,要去解决一个问题。注意: buf[] 是目标缓存区不是源缓存区,你需要将结果写入 buf[] 中。这道题很像我们正式工作的情形,公司给我们一个包或库及其说明,我们要看懂并会用。原创 2024-05-19 14:59:05 · 220 阅读 · 0 评论 -
156,上下翻转二叉树
上面的步骤逐层进行。题目数据保证每个右节点都有一个同级节点(即共享同一父节点的左节点)且不存在子节点。,请你将此二叉树上下翻转,并返回新的根节点。给你一个二叉树的根节点。原创 2024-05-19 14:43:20 · 155 阅读 · 0 评论 -
155,最小栈
-> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();操作,并能在常数时间内检索到最小元素的栈。数据结构基础,不解释。原创 2024-05-19 14:30:38 · 193 阅读 · 0 评论 -
154,寻找旋转排序数组中的最小值II
它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。你必须尽可能减少整个过程的操作步骤。的数组,预先按照升序排列,经由。再上一题的基础上加一个判断条件。原创 2024-05-19 14:22:09 · 172 阅读 · 0 评论 -
153,寻找旋转排序数组中的最小值
它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。说这么多,其实就是稍微升级了一下的二分查找。的数组,预先按照升序排列,经由。你必须设计一个时间复杂度为。原创 2024-05-19 14:15:36 · 163 阅读 · 0 评论 -
152,乘积最大子数组
请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。结果不能为 2, 因为 [-2,-1] 不是子数组。子数组 [2,3] 有最大乘积 6。测试用例的答案是一个。原创 2024-05-19 14:01:30 · 94 阅读 · 0 评论 -
151,反转字符串中的单词
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。原创 2024-05-19 13:51:11 · 106 阅读 · 0 评论 -
150,逆波兰表达式求值
该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。首先,逆波兰表达式是一个很经典的编程题,每个程序员都应该知道。返回一个表示表达式值的整数。最常用的办法就是栈,也可以用数组。原创 2024-05-19 13:34:59 · 174 阅读 · 0 评论 -
149,直线上最多的数
求最多有多少个点在同一条直线上。更好的解是哈希表,但是我不太懂。笨办法,三次遍历,最好懂。原创 2024-05-19 13:26:59 · 137 阅读 · 0 评论 -
148,排序链表
【代码】148,排序链表。原创 2024-05-18 12:58:36 · 115 阅读 · 0 评论 -
147,对链表进行插入排序
下面是插入排序算法的一个图形示例。部分排序的列表(黑色)最初只包含列表中的第一个元素。每次迭代时,从输入数据中删除一个元素(红色),并就地插入已排序的列表中。对链表进行排序,并返回。对链表进行插入排序。原创 2024-05-18 11:12:00 · 168 阅读 · 0 评论 -
146,LRU缓存
/ 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}// 缓存是 {1=1, 2=2}用一个双向链表储存数据,每用到一个数据,就将这个节点移动到链表的头位置。// 返回 -1 (未找到)lRUCache.get(1);// 返回 -1 (未找到)lRUCache.put(1, 1);// 缓存是 {1=1}lRUCache.get(1);请你设计并实现一个满足。原创 2024-05-17 15:43:52 · 344 阅读 · 0 评论 -
145,二叉树的后序遍历
给你一棵二叉树的根节点。算法基础题,不多解释。原创 2024-05-17 15:31:19 · 190 阅读 · 0 评论