2024.5.9 —— LeetCode 高频题复盘

2024-05-11 02:44
文章标签 leetcode 复盘 高频 2024.5

本文主要是介绍2024.5.9 —— LeetCode 高频题复盘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • LCR 174. 寻找二叉搜索树中的目标节点
  • 518. 零钱兑换 II
  • LCR 159. 库存管理 III
  • 450. 删除二叉搜索树中的节点
  • 59. 螺旋矩阵 II
  • LCR 127. 跳跃训练
  • 16. 最接近的三数之和
  • LCR 143. 子结构判断
  • 75. 颜色分类
  • LCR 121. 寻找目标值 - 二维数组

LCR 174. 寻找二叉搜索树中的目标节点


题目链接

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def findTargetNode(self, root: Optional[TreeNode], cnt: int) -> int:def dfs(root):if not root:returndfs(root.right)self.cnt-=1if self.cnt==0:self.res=root.valreturndfs(root.left)self.cnt=cntdfs(root)return self.res

518. 零钱兑换 II


题目链接

class Solution:def change(self, amount: int, coins: List[int]) -> int:dp=[0]*(amount+1)dp[0]=1n=len(coins)for i in range(n):for j in range(coins[i],amount+1):dp[j]+=dp[j-coins[i]]return dp[amount]

LCR 159. 库存管理 III


题目链接

class Solution:def inventoryManagement(self, stock: List[int], cnt: int) -> List[int]:import heapqans=[]for num in stock:heapq.heappush(ans,-num)if len(ans)>cnt:heapq.heappop(ans)return [-num for num in ans]

同 面试题 17.14. 最小K个数

450. 删除二叉搜索树中的节点


题目链接

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]:# 没找到要删除的结点if not root:return Noneif key>root.val:root.right=self.deleteNode(root.right,key)if key<root.val:root.left=self.deleteNode(root.left,key)if key==root.val:# 要删除的结点是叶子结点,左右结点为空if not root.left and not root.right:return None# 要删除的结点左结点为空,右结点不为空if not root.left and root.right:return root.right# 要删除的结点左结点不为空,右结点为空if root.left and not root.right:return  root.left# 要删除的结点左右结点均不为空if root.left and root.right:# 找到要删除结点的右孩子cur=root.rightwhile cur.left:cur=cur.leftcur.left=root.leftreturn root.rightreturn root        

参考题解

59. 螺旋矩阵 II


题目链接

class Solution:def generateMatrix(self, n: int) -> List[List[int]]:left,right,up,down=0,n-1,0,n-1matrix=[[0 for _ in range(n)] for _ in range(n)]start,end=1,n*nwhile start<=end:for i in range(left,right+1):matrix[up][i]=startstart+=1up+=1for i in range(up,down+1):matrix[i][right]=startstart+=1right-=1for i in range(right,left-1,-1):matrix[down][i]=startstart+=1down-=1for i in range(down,up-1,-1):matrix[i][left]=startstart+=1left+=1return matrix

区别于54. 螺旋矩阵

LCR 127. 跳跃训练


题目链接

class Solution:def trainWays(self, num: int) -> int:if num == 0:return 1if num==1 or num==2:return numdp=[0]*(num+1)dp[1]=1dp[2]=2for i in range(3,num+1):dp[i]=dp[i-1]+dp[i-2]return dp[num]%1000000007

注意本题与70. 爬楼梯有个小小的区别就是,n / num 的取值能不能为0。

16. 最接近的三数之和


题目链接

class Solution:def threeSumClosest(self, nums: List[int], target: int) -> int:nums.sort()res=nums[0]+nums[1]+nums[2]for i in range(len(nums)):start=i+1end=len(nums)-1while start<end:s=nums[i]+nums[start]+nums[end]if abs(s-target)<abs(res-target):res=sif s>target:end=end-1elif s<target:start+=1else:return sreturn res

LCR 143. 子结构判断


题目链接

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:# 以当前结点A为根结点的子树是否包含树Bdef recur(A,B):if not B:return Trueif not A or A.val !=B.val:return Falsereturn A.val ==B.val and recur(A.left,B.left) and recur(A.right,B.right)if not A or not B:return Falsereturn recur(A,B) or self.isSubStructure(A.left,B) or self.isSubStructure(A.right,B)

注意区别于 572. 另一棵树的子树,本题是判断子结构,只要包含这一部分就行,不管这一部分下面是否还有节点,而子树是包含该子树,该子树下面不能包含其他的节点,否则就不是包含该子树。
还有关联题目 100. 相同的树

75. 颜色分类


题目链接

class Solution:def sortColors(self, nums: List[int]) -> None:n=len(nums)ptr=0for i in range(n):if nums[i]==0:nums[i],nums[ptr]=nums[ptr],nums[i]ptr+=1for i in range(ptr,n):if nums[i]==1:nums[i],nums[ptr]=nums[ptr],nums[i]ptr+=1

LCR 121. 寻找目标值 - 二维数组


题目链接

class Solution:def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:# 0 <= n <= 1000# 0 <= m <= 1000if not matrix:return Falserows=len(matrix)cols=len(matrix[0])i=0j=cols-1while j>=0 and i<rows:if matrix[i][j]>target:j-=1elif matrix[i][j]<target:i+=1else:return Truereturn False

同 74. 搜索二维矩阵

这篇关于2024.5.9 —— LeetCode 高频题复盘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978279

相关文章

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

LeetCode 第414场周赛个人题解

目录 Q1. 将日期转换为二进制表示 原题链接 思路分析 AC代码 Q2. 范围内整数的最大得分 原题链接 思路分析 AC代码 Q3. 到达数组末尾的最大得分 原题链接 思路分析 AC代码 Q4. 吃掉所有兵需要的最多移动次数 原题链接 思路分析 AC代码 Q1. 将日期转换为二进制表示 原题链接 Q1. 将日期转换为二进制表示 思路分析