LeetCode写题记录
文章平均质量分 65
记录写题心得与收获~
蔗理苦
Hello, man
展开
-
LeetCode 389. 找不同
输入:s = “abcd”, t = “abcde”随机重排,然后在随机位置添加一个字母。输入:s = “”, t = “y”最后留下来的结果即为添加的字符。解释:‘e’ 是那个被添加的字母。,它们只包含小写字母。原创 2024-03-14 20:22:51 · 257 阅读 · 1 评论 -
LeetCode 1768. 交替合并字符串
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。注意,word2 比 word1 长,“rs” 需要追加到合并后字符串的末尾。注意,word1 比 word2 长,“cd” 需要追加到合并后字符串的末尾。比较简单的题目,思路很清晰,直接放上代码了。合并后: a p b q r s。合并后: a p b q c d。合并后: a p b q c r。返回 合并后的字符串。原创 2024-03-11 20:19:21 · 397 阅读 · 1 评论 -
LeetCode 面试题 17.04. 消失的数字
的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?求 1 ~ n 的和后,减去数组的和即可。输入:[9,6,4,2,3,5,7,0,1]注意:本题相对书上原题稍作改动。输入:[3,0,1]原创 2023-12-09 13:57:48 · 197 阅读 · 0 评论 -
LeetCode 面试题 17.01. 不用加号的加法
将 a、b 进行二进制加法,ai、bi 表示 a、b 第 i 位的值(0或1),ci 表示第 i 位的进位(0或1)。使用 ans 表示计算结果,初始情况 ans 各位均为 0。设计一个函数把两个数字相加。或者其他算术运算符。原创 2023-12-06 19:15:12 · 201 阅读 · 0 评论 -
LeetCode 面试题 16.26. 计算器
给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。整数除法仅保留整数部分。表达式仅包含非负整数,原创 2023-11-20 13:08:58 · 359 阅读 · 0 评论 -
LeetCode 面试题 16.25. LRU 缓存
设计和构建一个“最近最少使用”缓存,该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值),并在初始化时指定最大容量。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。LRUCache cache = new LRUCache( 2 /* 缓存容量 */ );- 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。// 返回 -1 (未找到)cache.get(1);// 返回 -1 (未找到)原创 2023-11-17 19:51:56 · 1139 阅读 · 0 评论 -
LeetCode 面试题 16.24. 数对和
直接遍历数组,使用 map 记录出现过的数字和次数,每次查找是否有匹配的 another。设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。使用双指针双向检测,注意要先排序。原创 2023-11-16 14:17:26 · 163 阅读 · 0 评论 -
LeetCode 面试题 16.22. 兰顿蚂蚁
一只蚂蚁坐在由白色和黑色方格构成的无限网格上。开始时,网格全白,蚂蚁面向右侧。(2) 如果在黑色方格上,则翻转方格的颜色,向左(逆时针方向)转 90 度,并向前移动一个单位。(1) 如果在白色方格上,则翻转方格的颜色,向右(顺时针)转 90 度,并向前移动一个单位。表示,分别表示蚂蚁 左、上、右、下 的朝向。只需要返回能够包含蚂蚁走过的所有方格的最小矩形。网格由数组表示,每个元素是一个字符串,代表网格中的一行,黑色方格由。编写程序来模拟蚂蚁执行的前 K 个动作,并返回最终的网格。表示,蚂蚁所在的位置由。原创 2023-11-15 13:01:21 · 221 阅读 · 0 评论 -
LeetCode 面试题 16.21. 交换和
返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。原创 2023-11-13 23:35:24 · 415 阅读 · 0 评论 -
LeetCode 面试题 16.20. T9键盘
在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。题目还好,一个一个匹配就是了。用队列存储中间满足匹配的单词,同时使用 Match 函数判断匹配,而不是建立 Map 判断映射关系,这样会快一点。原创 2023-11-11 15:00:37 · 577 阅读 · 0 评论 -
LeetCode 面试题 16.19. 水域大小
该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。遍历所有点,若为池塘,则进行泛洪“污染”(深度优先遍历),将与其连接的池塘全设置为 -1,以免后续重复计算。本算法使用 DIR 表示当前相对泛洪中心的位置,以确定泛洪的下次污染区域,减少些许重复“污染”时间。你有一个用于表示一片土地的整数矩阵。输出: [1,2,4]原创 2023-11-10 23:23:49 · 474 阅读 · 0 评论 -
LeetCode 面试题 16.18. 模式匹配
不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。,顺序取 pattern 中的每个字符,判断 value 对应位置是否匹配。“a”=“dogdog”,b=“”,反之也符合规则。组成,用于描述字符串中的模式。代码中用 lens 存储所有的有序对。),该字符串也匹配像。判断长度是否满足要求。原创 2023-11-06 15:59:12 · 244 阅读 · 0 评论 -
LeetCode 面试题 16.17. 连续数列
使用分治可以实现 O(logn) 的复杂度。将数组 nums 一分为二,记为 left 和 right。给定一个整数数组,找出总和最大的连续数列,并返回总和。连续子数组 [4,-1,2,1] 的和最大,为 6。使用动态规划可以实现。,因此可以边计算边更新。原创 2023-11-05 22:50:25 · 329 阅读 · 0 评论 -
LeetCode 面试题 16.16. 部分排序
给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。一次遍历也可以实现,原理是:乱序的左端 > 右边的最小值,乱序的右端 < 左边的最大值。从左向右遍历,寻找乱序的右端;从右向左遍历,寻找乱序的左端。笨蛋方法就是,先排序,然后一个一个比较。原创 2023-11-04 17:19:22 · 234 阅读 · 0 评论 -
LeetCode 面试题 16.15. 珠玑妙算
计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,计算机可能有RGGB 4种(槽1为红色,槽2、3为绿色,槽4为蓝色)。作为用户,你试图猜出颜色组合。打个比方,你可能会猜YRGB。要是猜对某个槽的颜色,则算一次“猜中”;要是只猜对颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。输入: solution=“RGBY”,guess=“GGRR”,编写一个方法,返回猜中和伪猜中的次数。数据量很小,直接统计就好了。解释: 猜中1次,伪猜中1次。原创 2023-11-03 13:14:00 · 247 阅读 · 0 评论 -
LeetCode 面试题 16.14. 最佳直线
设穿过最多点的直线所穿过的全部点编号从小到大排序的列表为。输入: [[0,0],[1,1],[1,0],[2,0]]作为答案,若有多条直线穿过了相同数量的点,则选择。解释: 所求直线穿过的3个点的编号为[0,2,3]暴力枚举,效果反而是最好的hh。给定一个二维平面及平面上的 N 个点列表。请找出一条直线,其通过的点的数目最多。原创 2023-11-02 19:37:28 · 238 阅读 · 0 评论 -
LeetCode 面试题 16.13. 平分正方形
所求直线穿过两个正方形会形成4个交点,请返回4个交点形成线段的两端点坐标(两个端点即为4个交点中距离最远的2个点,这2个点所连成的线段一定会穿过另外2个交点)。给定两个正方形及一个二维平面。请找出将这两个正方形分割成两半的一条直线。假设正方形顶边和底边与 x 轴平行。直线 y = 0 能将两个正方形同时分为等面积的两部分,返回的两线段端点为[-1,0]和[2,0]若同时有多条直线满足要求,则选择斜率最大的一条计算并返回(与Y轴平行的直线视为斜率无穷大)。包含3个数值,正方形的左下顶点坐标。原创 2023-11-02 00:29:56 · 235 阅读 · 0 评论 -
Leetcode 面试题 16.11. 跳水板
可以使用 3 次 shorter,得到结果 3;使用 2 次 shorter 和 1 次 longer,得到结果 4。以此类推,得到最终结果。你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为。关键点是,输出结果是等差数列,公差为 longer - shorter。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。,长度较长的木板长度为。原创 2023-10-31 15:22:44 · 112 阅读 · 0 评论 -
LeetCode 面试题 16.10. 生存人数
你可以假设所有人都出生于 1900 年至 2000 年(含 1900 和 2000 )之间。如果一个人在某一年的任意时期处于生存状态,那么他应该被纳入那一年的统计中。例如,生于 1908 年、死于 1909 年的人应当被列入 1908 年和 1909 年的计数。如果有多个年份生存人数相同且均为最大值,输出其中最小的年份。给定 N 个人的出生年份和死亡年份,第。奈何最开始写这道题没看清题目要求,以为。,实现一个方法以计算生存人数最多的年份。一看运行结果,hhh 乐了。原创 2023-10-31 00:12:23 · 208 阅读 · 0 评论 -
LeetCode 面试题 16.09. 运算
类似 Negative(int a) 的思想,Negative(int a) 可以看做是 Multipy(-1, int a),因此将 nums 数组扩展为 a * 2。请实现整数数字的乘法、减法和除法运算,运算结果均为整数数字,程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算。即可求解 a * b。在求解 -b 时(记为 cnt),累加 a * 2。这里需要注意 a 的符号,如果 b < 0,需要将 a 异号。原创 2023-10-30 19:17:39 · 189 阅读 · 0 评论 -
LeetCode 面试题 16.08. 整数的英语表示
由于英文数字表示的特点,将整数每隔 3 位分为一组,从右到左分别对应 “Zero”, “Thousand”, “Million”, “Billion”。因此,现在只需要求解 1 ~ 999 的英文表示,记为 sw(SmallWord)。如果 sw 为 “”,其对应括号内的内容不显示。给定一个整数,打印该整数的英文描述。原创 2023-10-29 15:46:48 · 197 阅读 · 0 评论 -
LeetCode 面试题 16.07. 最大数值
具体代码实现有一些差异,因为取最高符号位时,如果是 a - b < 0,右移得到的最终结果为 -1(带符号位),因此最后的表达式需要做一些小改动。同时为了避免算数溢出,使用 long 正兴存储中间计算变量。编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。找出最大的数,本质还是选择,只不过加入了算术运算。,sgn 为 0 则输出 a,是 1 则输出 b。的最高位 sgn,如果是 0 则。但是不用 > 号,而是取。原创 2023-10-28 13:49:19 · 240 阅读 · 0 评论 -
LeetCode 面试题 16.06. 最小差
将两个数组排序,依次比较最临近的两个数的差值。每次取较小的那个数前进一位。如果两个数相等,则直接返回 0,因为没有比 0 更小的结果了。输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8},计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差。输出:3,即数值对(11, 8)原创 2023-10-27 22:30:45 · 373 阅读 · 0 评论 -
LeetCode 面试题 16.05. 阶乘尾数
每隔 5 个数就会出现一个 5,每隔 25 个数会出现 一个 25, 每隔 125 个数会出现一个 125…因此只需要计算 ans = n / 5 + n / 25 + n / 125 + …设计一个算法,算出 n 阶乘有多少个尾随零。= 120, 尾数中有 1 个零.= 6, 尾数中没有零。说明: 你算法的时间复杂度应为。原创 2023-10-27 15:26:12 · 197 阅读 · 0 评论 -
LeetCode 面试题 16.04. 井字游戏
如果游戏存在获胜者,就返回该游戏的获胜者使用的字符(“X"或"O”);如果游戏以平局结束,则返回 “Draw”;如果仍会有行动(游戏未结束),则返回 “Pending”。设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" ",“X"和"O"组成,其中字符” "代表一个空位。没有玩家获胜且不存在空位。没有玩家获胜且仍存在空位。原创 2023-10-26 11:02:25 · 210 阅读 · 0 评论 -
LeetCode 面试题 16.03. 交点
若有多个交点(线段重叠)则返回 X 值最小的点,X 坐标相同则返回 Y 值最小的点。),如果它们有交点,请计算其交点,没有交点则返回空值。给定两条线段(表示为起点。要求浮点型误差不超过。{},两条线段没有交点。原创 2023-10-25 21:44:36 · 347 阅读 · 0 评论 -
LeetCode 面试题 16.02. 单词频率
/返回2,"have"出现2次。//返回0,"you"没有出现过。设计一个方法,找出任意指定单词在一本书中的出现频率。原创 2023-10-24 15:45:27 · 205 阅读 · 0 评论 -
LeetCode 面试题 16.01. 交换数字
恰逢前两天看到过位运算的方法,这里刚好用上了哈哈。当然,实际使用时不建议这样写,因为可读性太差。编写一个函数,不用临时变量,直接交换。输入: numbers = [1,2]原创 2023-10-23 23:31:21 · 177 阅读 · 0 评论 -
LeetCode 面试题 10.11. 峰与谷
在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。原创 2023-10-21 10:29:13 · 425 阅读 · 1 评论 -
LeetCode 面试题 10.10. 数字流的秩
假设你正在读取一串整数。每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。使用数组存储加入的 x,并计算 x 的秩。为了便于计算秩,需要将数组升序排列。方法,返回小于或等于 x 的值的个数。方法,每读入一个数字都会调用该方法;注意:本题相对原题稍作改动。原创 2023-10-19 14:39:54 · 286 阅读 · 0 评论 -
LeetCode 面试题 10.09. 排序矩阵查找
给定M×N矩阵,每一行、每一列都按升序排列,请编写代码找出某元素。原创 2023-10-19 13:23:17 · 441 阅读 · 0 评论 -
LeetCode 面试题 10.05. 稀疏数组搜索
有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。原创 2023-10-18 23:16:28 · 306 阅读 · 0 评论 -
LeetCode 面试题 10.03. 搜索旋转数组
还可以先用二分查找转折点 k,此时考虑起点为 k 终点为 k - 1 的循环数组,即,从 [k, j] 续上 [i, k - 1] 的有序数组,对其使用二分查找第一个元素。给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详。请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。右枝有序且 target 在该区间内,则忽略左枝,只看右枝。若 target 不在该区间内,直接返回 -1。若 target 不在该区间内,直接返回 -1。数组被旋转,则数组内所有元素都在区间。原创 2023-10-18 15:33:20 · 292 阅读 · 0 评论 -
LeetCode 面试题 10.02. 变位词组
编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。这句话中多添加 ‘-’ 是避免后续字符的统计次数影响到当前字符。注意:本题相对原题稍作修改。原创 2023-10-17 12:51:57 · 184 阅读 · 0 评论 -
LeetCode 面试题 10.01. 合并排序的数组
给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。原创 2023-10-16 14:03:27 · 464 阅读 · 2 评论 -
LeetCode 面试题 08.14. 布尔运算
使用 dp 二维数组存储动态规划结果,每个元素 dp[i, j](记为 elem)为长度为 2 的一维数组,elem[0] 表示表达式 i ~ j 计算得到 0 的方法数,elem[1] 表示计算得到 1 的方法数。(XOR) 符号组成。求解左右两部分的值,依据运算符 ‘|’ 计算并返回结果,最终得到答案。给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由。输入: s = “0&0&0&1^1|0”, result = 1。输入: s = “1^0|0|1”, result = 0。原创 2023-10-15 12:06:18 · 392 阅读 · 0 评论 -
LeetCode 面试题 08.13. 堆箱子
给你一堆n个箱子,箱子宽 wi、深 di、高 hi。箱子不能翻转,将箱子堆起来时,下面箱子的宽度、高度和深度必须大于上面的箱子。实现一种方法,搭出最高的一堆箱子。箱堆的高度为每个箱子高度的总和。暴力枚举,但是需要做一些优化,即动态规划。原创 2023-10-14 17:42:12 · 292 阅读 · 0 评论 -
LeetCode 面试题 08.12. 八皇后
设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。4 皇后问题存在如下两个不同的解法。”, // 解法 1。Q.”, // 解法 2。注意:本题相对原题做了扩展。原创 2023-10-13 21:38:30 · 284 阅读 · 0 评论 -
LeetCode 面试题 08.11. 硬币
a 减 1,则多出 25 分,总面值为 25 + 10b + 5c。由 b、c 重新降序排列,即10b’ + 5c’ = 25 + 10b + 5c,解得 b’ = b + (5 + c) / 2,c’ = (c + 5) % 2。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。因为给定 n 后,d 由 a、b、c 决定,因此仅讨论 a、b、c 之间的关系即可。共计 (b + 1)(b + c +1) 种。给定 a 不动,讨论 b 和 c 的组合数。原创 2023-10-13 11:24:47 · 174 阅读 · 0 评论 -
LeetCode 面试题 08.10. 颜色填充
周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。注意,右下角的像素没有更改为 2 ,因为它不属于初始坐标点的周围区域。初始坐标点位于图像的正中间,坐标 (sr,sc)=(1,1)。初始坐标点周围区域上所有符合条件的像素点的颜色都被更改成 2。编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。表示,元素为初始颜色值。初始坐标点的行坐标为。待填充的图像用二维数组。原创 2023-10-12 00:23:20 · 159 阅读 · 0 评论