
LeetCode
Windy.Zhhh
记录学习
展开
-
LeetCode#57. 插入区间
LeetCode#57. 插入区间原创 2025-01-27 01:22:53 · 362 阅读 · 0 评论 -
LeetCode#56. 合并区间
LeetCode#56. 合并区间原创 2025-01-27 00:59:41 · 143 阅读 · 0 评论 -
LeetCode#452. 用最少数量的箭引爆气球
LeetCode#452. 用最少数量的箭引爆气球原创 2025-01-27 00:14:29 · 248 阅读 · 0 评论 -
LeetCode#134. 加油站
LeetCode#134. 加油站原创 2025-01-25 00:11:24 · 525 阅读 · 0 评论 -
LeetCode#238. 除自身以外数组的乘积
LeetCode#238. 除自身以外数组的乘积原创 2025-01-24 23:15:33 · 296 阅读 · 0 评论 -
LeetCode#45. 跳跃游戏 II
LeetCode#45. 跳跃游戏 II原创 2025-01-21 19:01:13 · 296 阅读 · 0 评论 -
LeetCode#80. 删除有序数组中的重复项 II
LeetCode#80. 删除有序数组中的重复项 II原创 2025-01-21 15:18:11 · 222 阅读 · 0 评论 -
LeetCode#136. 只出现一次的数字
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。开始审题不清楚,自己又构造了一个列表,解出了这道题。题目要求只使用常量额外空间,考虑异或运算。来源:力扣(LeetCode)原创 2023-01-27 14:43:53 · 156 阅读 · 0 评论 -
LeetCode#55. 跳跃游戏
我们遍历数组中的每一个元素,如果其中不包含0,那么就非True无疑了,其他情况下,第一个元素是0,但是列表中元素不止一个,必定是False,最后一种情况下,我们找到0,再把0前元素的值与下标的差来作比较即可判断。又想了一个简单的动态规划的算法,但是有许多重复操作,导致最后提交还超时了。来源:力扣(LeetCode)最终动态规划改良后终于通过了。...原创 2022-08-29 16:48:19 · 134 阅读 · 0 评论 -
LeetCode#2379. 得到 K 个黑块的最少涂色次数
给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 'W' 要么是 'B' ,表示第 i 块的颜色。字符 'W' 和 'B' 分别表示白色和黑色。这道题可以理解为在每k个代码块里面找出包含'W'最少的代码块,计算其内包含'W'的个数即可。一种得到 7 个连续黑色块的方法是把第 0 ,3 和 4 个块涂成黑色。输入:blocks = "WBWBBBW", k = 2。blocks[i] 要么是 'W' ,要么是 'B'。不需要任何操作,因为已经有 2 个连续的黑块。...原创 2022-08-29 10:57:55 · 1127 阅读 · 0 评论 -
LeetCode#74.搜索二维矩阵(Python)
第一种方法就是根据题目,然后按照自己的理解慢慢写出来的(第一眼想到的解法并没有用二分查找😂,但是写出来后发现运行的也不算慢)写完后再一想,突然悟到这就不是一个单调递增的数列吗😂,用二分查找来解答应该才是出题的本意。本来英语就是弱项,复习英语四级实在太难受,听力听不懂,不听了,写个程序题换换脑子🤣。还有一种极其简单的判断方法,我本以为这个方法会超时,谁知道算的也挺快🤣。来源:力扣(LeetCode)原创 2022-08-23 01:28:40 · 302 阅读 · 0 评论 -
LeetCode#20.有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:false示例 5:输入:s = "{[]}"输出:true作者:力扣 (LeetCode)链接:力扣 先进行分析我们了原创 2022-06-15 00:00:38 · 119 阅读 · 0 评论 -
LeetCode#141.环形链表
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示原创 2022-06-01 21:06:28 · 118 阅读 · 0 评论 -
LeetCode#234. 回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例 1:输入:head = [1,2,2,1]输出:true示例 2:输入:head = [1,2]输出:false来源:力扣(LeetCode)链接:力扣 我有两种想法来做,但都是需要先建立一个列表,来储存链表中每个节点的数据值。方法一:用列表的索引切片来直接判断。方法二:用双指针来判断。原创 2022-06-01 17:16:19 · 101 阅读 · 0 评论 -
LeetCode#206. 反转链表
题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]来源:力扣(LeetCode)链接:https://leetcode.cn/problems/reverse-linked-list我的方法比较简单,并没有使用栈。与LeetCode#21. 合并两个.原创 2022-05-15 21:57:21 · 357 阅读 · 0 评论 -
LeetCode#21. 合并两个有序链表(Python)
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]来源:力扣(LeetCode)链接:https://leetcode.cn/problems/merge-two-sorted-lists我.原创 2022-05-15 21:47:18 · 623 阅读 · 0 评论 -
LeetCode#62. 不同路径
题目:一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 ->..原创 2022-02-11 13:47:47 · 109 阅读 · 0 评论 -
LeetCode#268. 丢失的数字
题目:给定一个包含 [0, n]中n个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。示...原创 2022-02-11 00:05:09 · 339 阅读 · 0 评论 -
LeetCode#2062. 统计字符串中的元音子字符串
题目:子字符串 是字符串中的一个连续(非空)的字符序列。元音子字符串 是 仅 由元音('a'、'e'、'i'、'o' 和 'u')组成的一个子字符串,且必须包含 全部五种 元音。给你一个字符串 word ,统计并返回 word 中 元音子字符串的数目 。示例 1:输入:word = "aeiouu"输出:2解释:下面列出 word 中的元音子字符串(斜体加粗部分):- "aeiouu"- "aeiouu"示例 2:输入:word = "unicornarihan"输出原创 2022-02-10 13:39:29 · 435 阅读 · 0 评论 -
LeetCode#36. 有效的数独
题目:请你判断一个9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。空白格用'.'表示。示例 1:输入:board =[["5","3",".",".","7","."...原创 2022-02-09 23:42:30 · 332 阅读 · 0 评论 -
LeetCode#19. 删除链表的倒数第 N 个结点
这道题我们可以先得到链表的节点数之和(这里我用count来表示),然后判断当特殊情况(要求删除第一个节点)和常规情况下的操作,再进行相应的步骤即可。# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def ...原创 2022-02-08 23:48:28 · 233 阅读 · 0 评论 -
LeetCode#237. 删除链表中的节点
请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9示例 2:输入:head = [4,5,1,9], node = 1输出:[4,5,9..原创 2022-02-07 23:52:38 · 98 阅读 · 0 评论 -
LeetCode#118. 杨辉三角
题目:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例2:输入: numRows = 1输出: [[1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pascals-triangle这道题并不难..原创 2022-02-07 00:10:11 · 184 阅读 · 0 评论 -
LeetCode#13. 罗马数字转整数(Python)
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1 。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II...原创 2022-02-06 19:10:57 · 231 阅读 · 0 评论 -
LeetCode#204. 计数质数
统计所有小于非负整数n的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-primes这道题我们采用埃拉托色尼筛选法_百度百科class Solution: def countPrimes(s...原创 2022-02-05 23:40:11 · 552 阅读 · 0 评论 -
LeetCode#412. Fizz Buzz
题目(力扣):给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。answer[i] == "Fizz" 如果 i 是 3 的倍数。answer[i] == "Buzz" 如果 i 是 5 的倍数。answer[i] == i (以字符串形式)如果上述条件全不满足。示例 1:输入:n = 3输出:["1",.原创 2022-02-05 21:31:11 · 495 阅读 · 0 评论 -
LeetCode#198. 打家劫舍
题目(LeetCode):你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3...原创 2022-02-04 19:59:39 · 111 阅读 · 0 评论 -
LeetCode#53. 最大子数组和
题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23该题仍然是动态规划问题,我们可以得到前n个元素的和,然后一次计算,最原创 2022-02-04 15:18:29 · 532 阅读 · 0 评论 -
LeetCode#121. 买卖股票的best时机(Python)
题目(来自力扣):给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 =原创 2022-02-03 00:13:28 · 128 阅读 · 0 评论 -
LeetCode#70. 爬楼梯(Python)
题目(来源力扣):假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入:n = 3输出:3解释:有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶提示:1 <= n <= 45这道题让我们求爬到第n层有原创 2022-02-01 21:11:04 · 1166 阅读 · 0 评论 -
LeetCode#278. 第一个错误的版本(Python)
题目(来自力扣):你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例.原创 2022-02-01 15:20:43 · 260 阅读 · 0 评论 -
LeetCode#88. 合并两个有序数组(Python)
题目(来源力扣):给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:原创 2022-01-30 22:15:02 · 687 阅读 · 1 评论 -
LeetCode#14. 最长公共前缀(Python)
题目:(来源力扣)编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。我的解法是先得到strs[0],把strs[0]作为它与自己的公共前缀,然后再依次与第二、第三、第四……求最长的公共前缀,如果判断过程中得到某次循环后公共前缀原创 2022-01-29 18:03:28 · 138 阅读 · 0 评论 -
LeetCode#38. 外观数列(Python)
题目:给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描...原创 2022-01-28 22:50:18 · 338 阅读 · 2 评论 -
LeetCode#剑指 Offer 10- I. 斐波那契数列(Python)
题目:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。用递归方法我已经发过一遍了,还有另外一种借鉴别的大神的方法????,比较有原创 2022-01-27 22:32:59 · 680 阅读 · 0 评论 -
LeetCode#8. 字符串转换整数 (atoi)
题目:请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步...原创 2022-01-27 17:28:49 · 115 阅读 · 0 评论 -
LeetCode#125. 验证回文串
题目:本题验证字符串s是否为回文串,在验证之前,我们首先要去掉s中包含的空格和标点符号,何以用一下代码来去除: c="" English="1234567890abcdefghijklmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM" for j in s: if j in English: c+=j c=c.lower()去除之后得到了新的原创 2022-01-27 00:33:05 · 1088 阅读 · 1 评论 -
LeetCode#242. 有效的字母异位词(Python)
题目:这道题给了两个字符串,分别是s和t,要求我们判断其中每个字母出现的此时是否相同。因为都是,英文字母嘛,我们就知道了所有可能出现的字符,即是:English="abcdefghijklmnopqrstuvwxyz"我们可以先遍历English,利用Python中的.count()函数来计算字符出现的次数(如果未出现那就是0了),如果相等,再做接下来的判断即可。class Solution: def isAnagram(self, s: str, t: str) -> b原创 2022-01-26 23:35:59 · 106 阅读 · 0 评论 -
LeetCode#387. 字符串中的第一个唯一字符
题目:方法一:这道题是要求我们知道 字符串s中每个字母出现的次数。起初我想到的是先便利s中的每一个字母,然后再用count来计算每个字母出现的次数,但是这种算法是较慢的。class Solution: def firstUniqChar(self, s: str) -> int: for i in s: if s.count(i)==1: return s.index(i) return原创 2022-01-25 12:15:32 · 375 阅读 · 0 评论 -
LeetCode#7. 整数反转(Python)
题目:从例子中我们可以知道这道题要求的是把整数反转(其中需要注意的是反转后得到的整数首个数字不能是0,且最后的要是数字不能是"-"号)。e.g.01234和321-都是不符号要求的。我想到先把给定的数字x无论是正负,都先看作是正数(负数的话最后加一个负号就行)来计算,而Python的字符串切片来实现反转比较容易想到,所以我们只需str(x)就可以实现。最后别忘了对反转后整数是否超过 32 位的有符号整数的判断。以下是代码:class Solution:原创 2022-01-24 00:35:41 · 357 阅读 · 0 评论