leetcode
2020/5/18开始leetcode之旅
菜菜2022
这个作者很懒,什么都没留下…
展开
-
【动态规划-简单】剑指 Offer 10- II. 青蛙跳台阶问题
【代码】【动态规划-简单】剑指 Offer 10- II. 青蛙跳台阶问题。原创 2022-11-22 17:04:35 · 152 阅读 · 0 评论 -
【二叉树-中等】2265. 统计值等于子树平均值的节点数
使用先序遍历+哈希,占用较高的额外空间原创 2022-08-07 14:11:09 · 105 阅读 · 0 评论 -
【算法热题】29. 两数相除
题目被除数和除数均为 32 位有符号整数。除数不为 0。假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。本题中,如果除法结果溢出,则返回 2^31 − 1。【代码】执行用时:32 ms, 在所有 Python3 提交中击败了94.79% 的用户内存消耗:14.7 MB, 在所有 Python3 提交中击败了99.67% 的用户通过测试用例:992 / 992class Solution: def divide(self, divid原创 2022-04-25 17:11:19 · 195 阅读 · 0 评论 -
【二分搜索-中等】240. 搜索二维矩阵 II
【题目】编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。【代码】执行用时:216 ms, 在所有 Python3 提交中击败了5.92% 的用户内存消耗:21.1 MB, 在所有 Python3 提交中击败了90.43% 的用户通过测试用例:129 / 129class Solution: def searchMatrix(self, matrix: List[Li原创 2022-04-25 00:04:30 · 99 阅读 · 0 评论 -
【热题】279. 完全平方数(待补充数学方法)
【题目】给你一个整数 n ,返回 和为 n 的完全平方数的最少数量【代码】【方法1】动态规划执行用时:4772 ms, 在所有 Python3 提交中击败了27.66% 的用户内存消耗:14.9 MB, 在所有 Python3 提交中击败了93.21% 的用户通过测试用例:588 / 588class Solution: def numSquares(self, n: int) -> int: ans=0 sq=[1, 4, 9, 16, 25,原创 2022-04-24 18:00:43 · 212 阅读 · 0 评论 -
【腾讯-热题】5. 最长回文子串
【题目】示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”提示:1 <= s.length <= 1000s 仅由数字和英文字母组成【代码】执行用时:612 ms, 在所有 Python3 提交中击败了89.65% 的用户内存消耗:15.1 MB, 在所有 Python3 提交中击败了68.52% 的用户通过测试用例:180 / 180class Solution:原创 2022-04-24 16:30:30 · 154 阅读 · 0 评论 -
【二分搜索-中等】1498. 满足条件的子序列数目
题目注意:题目是计算子序列的数目这里要明确一个概念,子序列是原序列中的可非连续的元素列,假设有个数列[1,2,3,4,5,6]则[1,2,3],[1,5,6]都是原数列的子数列程序输入的数列nums是无序的,可以先对nums进行排序再操作,对结果没有什么影响,但是可以简化程序代码【代码】双指针执行用时:7380 ms, 在所有 Python3 提交中击败了27.50% 的用户内存消耗:24.6 MB, 在所有 Python3 提交中击败了50.00% 的用户通过测试用例:62 / 62原创 2022-04-20 14:20:18 · 628 阅读 · 0 评论 -
【二分搜索-简单】LCP 28. 采购方案
题目示例 1:输入:nums = [2,5,3,5], target = 6输出:1解释:预算内仅能购买 nums[0] 与 nums[2]。示例 2:输入:nums = [2,2,1,9], target = 10输出:4解释:符合预算的采购方案如下:nums[0] + nums[1] = 4nums[0] + nums[2] = 3nums[1] + nums[2] = 3nums[2] + nums[3] = 10提示:2 <= nums.length &原创 2022-04-20 12:03:19 · 99 阅读 · 0 评论 -
【二分搜索-中等】540. 有序数组中的单一元素
题目注意!题目要求:你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10提示:1 <= nums.length <= 1050 <= nums[i] <= 105前面这两种方法虽然可以得到正确的结果,但是都不满足题目所说的时间复杂度,第三种方法满足【代码】执行用时:68原创 2022-04-20 10:04:20 · 121 阅读 · 0 评论 -
【二分搜索-中等】剑指 Offer II 070. 排序数组中只出现一次的数字
【题目】【代码】执行用时:40 ms, 在所有 Python3 提交中击败了46.05% 的用户内存消耗:16.9 MB, 在所有 Python3 提交中击败了16.15% 的用户通过测试用例:14 / 14class Solution: def singleNonDuplicate(self, nums: List[int]) -> int: cnt=Counter(nums) for key in cnt: if cnt[k原创 2022-04-19 15:44:19 · 104 阅读 · 0 评论 -
【二分搜索-中等】1855. 下标对中的最大距离(需要复习双指针法)
题目示例 1:输入:nums1 = [55,30,5,4,2], nums2 = [100,20,10,10,5]输出:2解释:有效下标对是 (0,0), (2,2), (2,3), (2,4), (3,3), (3,4) 和 (4,4) 。最大距离是 2 ,对应下标对 (2,4) 。示例 2:输入:nums1 = [2,2,2], nums2 = [10,10,1]输出:1解释:有效下标对是 (0,0), (0,1) 和 (1,1) 。最大距离是 1 ,对应下标对 (0,1) 。示例原创 2022-04-19 14:44:54 · 138 阅读 · 0 评论 -
【二分查找-简单】LCP 18. 早餐组合
题目注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1提示:1 <= staple.length <= 10^51 <= drinks.length <= 10^51 <= staple[i],drinks[i] <= 10^51 <= x <= 2*10^5【代码】执行用时:1064 ms, 在所有 Python3 提交中击败了11.97% 的用户内存消耗:28.6原创 2022-04-19 14:12:57 · 353 阅读 · 0 评论 -
【二分查找-简单】69. x 的平方根
题目示例 1:输入:x = 4输出:2示例 2:输入:x = 8输出:2解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。提示:0 <= x <= 231 - 1【代码】执行用时:44 ms, 在所有 Python3 提交中击败了57.03% 的用户内存消耗:15 MB, 在所有 Python3 提交中击败了15.94% 的用户通过测试用例:1017 / 1017class Solution: def mySqrt(self原创 2022-04-19 13:15:02 · 82 阅读 · 0 评论 -
【二分查找-简单】剑指 Offer II 072. 求平方根
题目示例 1:输入: x = 4输出: 2示例 2:输入: x = 8输出: 2解释: 8 的平方根是 2.82842…,由于小数部分将被舍去,所以返回 2提示:0 <= x <= 231 - 1代码执行用时:44 ms, 在所有 Python3 提交中击败了64.22% 的用户内存消耗:14.8 MB, 在所有 Python3 提交中击败了89.31% 的用户通过测试用例:1017 / 1017class Solution: def mySqrt(self原创 2022-04-19 13:03:40 · 289 阅读 · 0 评论 -
【二分查找-简单】367. 有效的完全平方数
题目示例 1:输入:num = 16输出:true示例 2:输入:num = 14输出:false提示:1 <= num <= 2^31 - 1【代码】class Solution: def isPerfectSquare(self, num: int) -> bool: left,right=1,num while left<=right: mid=left+(right-left)//2原创 2022-04-19 12:40:18 · 110 阅读 · 0 评论 -
【二分查找-简单】278. 第一个错误的版本
【题目】示例 1:输入:n = 5, bad = 4输出:4解释:调用 isBadVersion(3) -> false调用 isBadVersion(5) -> true调用 isBadVersion(4) -> true所以,4 是第一个错误的版本。示例 2:输入:n = 1, bad = 1输出:1提示:1 <= bad <= n <= 231 - 1【代码】执行用时:36 ms, 在所有 Python3 提交中击败了61.83% 的原创 2022-04-19 12:34:16 · 85 阅读 · 0 评论 -
【二分查找-简单】441. 排列硬币
【题目】【代码】执行用时:40 ms, 在所有 Python3 提交中击败了82.23% 的用户内存消耗:14.8 MB, 在所有 Python3 提交中击败了93.27% 的用户通过测试用例:1335 / 1335class Solution: def arrangeCoins(self, n: int) -> int: def cal(n): return (1+n)*n//2 line1=1 line原创 2022-04-19 12:28:15 · 249 阅读 · 0 评论 -
【二分查找-简单】剑指 Offer II 068. 查找插入位置
【题目】【示例】示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4示例 4:输入: nums = [1,3,5,6], target = 0输出: 0示例 5:输入: nums = [1], target = 0输出: 0【提示】1 <= nums.length &l原创 2022-04-19 11:18:11 · 116 阅读 · 0 评论 -
【二分查找-简单】374. 猜数字大小
【题目】【示例】示例 1:输入:n = 10, pick = 6输出:6示例 2:输入:n = 1, pick = 1输出:1示例 3:输入:n = 2, pick = 1输出:1示例 4:输入:n = 2, pick = 2输出:2【提示】1 <= n <= 231 - 11 <= pick <= n【代码】执行用时:28 ms, 在所有 Python3 提交中击败了96.22% 的用户内存消耗:14.8 MB, 在所有 Python3 提交原创 2022-04-19 10:41:00 · 107 阅读 · 0 评论 -
【二叉树-简单】2236. 判断根结点是否等于子结点之和
题目大概意思就是一颗有三个结点的二叉树,判断根节点的值是否等于其左右孩子结点的值之和。注意:这棵树一定是非空的,且一定 有且只有一个左结点,同时也有且只有一个右结点。【代码】时间复杂度:O(1)空间复杂度:O(1)执行用时:32 ms, 在所有 Python3 提交中击败了100.00% 的用户内存消耗:14.9 MB, 在所有 Python3 提交中击败了16.67% 的用户通过测试用例:309 / 309class Solution: def checkTree(self, r原创 2022-04-13 12:01:19 · 558 阅读 · 0 评论 -
【高频题-中等-2】146. LRU 缓存
【题目】【代码】执行用时:6888 ms, 在所有 Python3 提交中击败了5.00% 的用户内存消耗:71.1 MB, 在所有 Python3 提交中击败了90.79% 的用户通过测试用例:22 / 22class LRUCache: def __init__(self, capacity: int): self.key=[] self.value=[] self.visit=[] self.cnt=0原创 2022-03-17 12:45:49 · 175 阅读 · 0 评论 -
【高频题-1】206. 反转链表
题目代码执行用时:40 ms, 在所有 Python3 提交中击败了54.80% 的用户内存消耗:16.1 MB, 在所有 Python3 提交中击败了45.45% 的用户通过测试用例:28 / 28class Solution: def reverseList(self, head: ListNode) -> ListNode: ans=None pre=head while head: if pre==hea原创 2022-03-17 12:04:20 · 252 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 64. 求1+2+…+n
题目代码执行用时:48 ms, 在所有 Python3 提交中击败了46.88% 的用户内存消耗:24.7 MB, 在所有 Python3 提交中击败了13.32% 的用户通过测试用例:35 / 35class Solution: def sumNums(self, n: int) -> int: return 0 if n==0 else n+self.sumNums(n-1)...原创 2022-03-15 22:26:30 · 180 阅读 · 0 评论 -
【字符串-中等】1689. 十-二进制数的最少数目
题目代码执行用时:92 ms, 在所有 Python3 提交中击败了39.44% 的用户内存消耗:15.2 MB, 在所有 Python3 提交中击败了66.90% 的用户通过测试用例:97 / 97class Solution: def minPartitions(self, n: str) -> int: cnt=Counter(str(n)) return int(max(cnt))【方法2】执行用时:432 ms, 在所有 Python3原创 2022-03-14 15:44:49 · 329 阅读 · 0 评论 -
【字符串-简单】剑指 Offer II 018. 有效的回文
题目代码执行用时:60 ms, 在所有 Python3 提交中击败了26.62% 的用户内存消耗:15.3 MB, 在所有 Python3 提交中击败了50.47% 的用户通过测试用例:480 / 480class Solution: def isPalindrome(self, s: str) -> bool: ans="" for item in s: num=ord(item) if (num>原创 2022-03-14 15:35:56 · 134 阅读 · 0 评论 -
【字符串-简单】2103. 环和杆
题目代码执行用时:40 ms, 在所有 Python3 提交中击败了12.02% 的用户内存消耗:14.9 MB, 在所有 Python3 提交中击败了91.17% 的用户通过测试用例:66 / 66class Solution: def countPoints(self, rings: str) -> int: cnt=dict() idx=0 lgth=len(rings) while idx<lgth:原创 2022-03-14 15:12:55 · 446 阅读 · 0 评论 -
【字符串-简单】1832. 判断句子是否为全字母句
题目代码执行用时:28 ms, 在所有 Python3 提交中击败了95.54% 的用户内存消耗:14.8 MB, 在所有 Python3 提交中击败了89.76% 的用户通过测试用例:79 / 79class Solution: def checkIfPangram(self, sentence: str) -> bool: return len(set(sentence))==26【方法2】执行用时:40 ms, 在所有 Python3 提交中击败了33.原创 2022-03-14 14:38:07 · 3461 阅读 · 0 评论 -
【字符串-简单】1678. 设计 Goal 解析器
题目代码执行用时:32 ms, 在所有 Python3 提交中击败了82.54% 的用户内存消耗:14.9 MB, 在所有 Python3 提交中击败了65.53% 的用户通过测试用例:105 / 105class Solution: def interpret(self, command: str) -> str: command=command.replace("()","o") command=command.replace("(al)","al原创 2022-03-14 14:32:05 · 3847 阅读 · 0 评论 -
【字符串-简单】1773. 统计匹配检索规则的物品数量
题目代码执行用时:40 ms, 在所有 Python3 提交中击败了87.46% 的用户内存消耗:19.2 MB, 在所有 Python3 提交中击败了30.66% 的用户通过测试用例:92 / 92class Solution: def countMatches(self, items: List[List[str]], ruleKey: str, ruleValue: str) -> int: idx={"type":0,"color":1,"name":2}原创 2022-03-14 14:18:11 · 2174 阅读 · 0 评论 -
【字符串-简单】2194. Excel 表中某个范围内的单元格
题目代码执行用时:44 ms, 在所有 Python3 提交中击败了21.63% 的用户内存消耗:14.9 MB, 在所有 Python3 提交中击败了83.04% 的用户通过测试用例:251 / 251class Solution: def cellsInRange(self, s: str) -> List[str]: ans=[] first_char,first_num,second_char,second_num=s[0],int(s[1])原创 2022-03-14 13:58:52 · 3340 阅读 · 0 评论 -
【二叉树-简单】LCP 44. 开幕式焰火
题目代码执行用时:52 ms, 在所有 Python3 提交中击败了43.11% 的用户内存消耗:15.4 MB, 在所有 Python3 提交中击败了43.99% 的用户通过测试用例:64 / 64class Solution: def visit(self,root): if not root:return self.cnt.add(root.val) self.visit(root.left) self.visit(ro原创 2022-03-14 09:33:34 · 3997 阅读 · 0 评论 -
【剑指Offer】剑指 Offer 55 - II. 平衡二叉树
题目代码执行用时:56 ms, 在所有 Python3 提交中击败了54.86% 的用户内存消耗:19.7 MB, 在所有 Python3 提交中击败了35.23% 的用户通过测试用例:227 / 227class Solution: def isBalanced(self, root: TreeNode) -> bool: def height(root): if not root: return 0原创 2022-03-14 09:27:01 · 3752 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 55 - I. 二叉树的深度
题目代码执行用时:44 ms, 在所有 Python3 提交中击败了64.54% 的用户内存消耗:17.6 MB, 在所有 Python3 提交中击败了5.23% 的用户通过测试用例:39 / 39class Solution: def visit(self,root,dep): if not root: return dep return max(self.visit(root.left,dep+1),self.visit(root原创 2022-03-14 09:11:07 · 392 阅读 · 0 评论 -
【剑指 Offer-困难】剑指 Offer 41. 数据流中的中位数
题目代码执行用时:1100 ms, 在所有 Python3 提交中击败了9.64%的用户内存消耗:25.9 MB, 在所有 Python3 提交中击败了54.95%的用户通过测试用例:18 / 18class MedianFinder: def __init__(self): """ initialize your data structure here. """ self.ans=[] def addNum(原创 2022-03-13 14:49:03 · 323 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 40. 最小的k个数
题目代码执行用时:56 ms, 在所有 Python3 提交中击败了73.20%的用户内存消耗:15.8 MB, 在所有 Python3 提交中击败了95.39%的用户通过测试用例:38 / 38class Solution: def getLeastNumbers(self, arr: List[int], k: int) -> List[int]: arr.sort() return arr[:k]【方法2】执行用时:64 ms, 在原创 2022-03-13 13:44:51 · 382 阅读 · 0 评论 -
【排序-简单】888. 公平的糖果交换
题目代码执行用时:76 ms, 在所有 Python3 提交中击败了57.34% 的用户内存消耗:17.1 MB, 在所有 Python3 提交中击败了12.54% 的用户通过测试用例:75 / 75class Solution: def fairCandySwap(self, aliceSizes: List[int], bobSizes: List[int]) -> List[int]: A=Counter(aliceSizes) B=Counte原创 2022-03-12 14:40:20 · 354 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer II 032. 有效的变位词
题目代码执行用时:60 ms, 在所有 Python3 提交中击败了25.13% 的用户内存消耗:16 MB, 在所有 Python3 提交中击败了8.20% 的用户通过测试用例:35 / 35class Solution: def isAnagram(self, s: str, t: str) -> bool: l_s=list(s) l_s.sort() l_t=list(t) l_t.sort()原创 2022-03-12 14:02:09 · 127 阅读 · 0 评论 -
【排序-简单】1859. 将句子排序
题目代码执行用时:24 ms, 在所有 Python3 提交中击败了98.56% 的用户内存消耗:14.9 MB, 在所有 Python3 提交中击败了90.23% 的用户通过测试用例:45 / 45class Solution: def sortSentence(self, s: str) -> str: ss=s.split() ss.sort(key=lambda x:x[-1]) return " ".join([item[:-原创 2022-03-12 13:43:31 · 622 阅读 · 0 评论 -
【排序-简单】2160. 拆分数位后四位数字的最小和
题目代码执行用时:32 ms, 在所有 Python3 提交中击败了89.14% 的用户内存消耗:14.8 MB, 在所有 Python3 提交中击败了94.53% 的用户通过测试用例:99 / 99class Solution: def minimumSum(self, num: int) -> int: ans=list(str(num)) ans.sort() i=0 while ans[i]==0:原创 2022-03-12 13:35:57 · 563 阅读 · 0 评论 -
【剑指 Offer】剑指 Offer 45. 把数组排成最小的数(需要复习,不太会)
题目代码参考k神执行用时:36 ms, 在所有 Python3 提交中击败了87.59% 的用户内存消耗:15.2 MB, 在所有 Python3 提交中击败了25.01% 的用户通过测试用例:222 / 222class Solution: def minNumber(self, nums: List[int]) -> str: def quick_sort(l , r): if l >= r: return原创 2022-03-12 13:22:42 · 494 阅读 · 0 评论