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:
                return
            dfs(root.right)
            self.cnt-=1
            if self.cnt==0:
                self.res=root.val
                return
            dfs(root.left)
        self.cnt=cnt
        dfs(root)
        return self.res

518. 零钱兑换 II


题目链接

class Solution:
    def change(self, amount: int, coins: List[int]) -> int:
        dp=[0]*(amount+1)
        dp[0]=1
        n=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 heapq
        ans=[]
        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 None
        if 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.right
                while cur.left:
                    cur=cur.left
                cur.left=root.left
                return root.right
        return root        

参考题解

59. 螺旋矩阵 II


题目链接

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

区别于54. 螺旋矩阵

LCR 127. 跳跃训练


题目链接

class Solution:
    def trainWays(self, num: int) -> int:
        if num == 0:
            return 1
        if num==1 or num==2:
            return num
        dp=[0]*(num+1)
        dp[1]=1
        dp[2]=2
        for 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+1
            end=len(nums)-1
            while start<end:
                s=nums[i]+nums[start]+nums[end]
                if abs(s-target)<abs(res-target):
                    res=s
                if s>target:
                    end=end-1
                elif s<target:
                    start+=1
                else:
                    return s
        return res

LCR 143. 子结构判断


题目链接

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
        # 以当前结点A为根结点的子树是否包含树B
        def recur(A,B):
            if not B:
                return True
            if not A or A.val !=B.val:
                return False
            return A.val ==B.val and recur(A.left,B.left) and recur(A.right,B.right)
        if not A or not B:
            return False
        return 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=0
        for i in range(n):
            if nums[i]==0:
                nums[i],nums[ptr]=nums[ptr],nums[i]
                ptr+=1
        for 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 <= 1000
        if not matrix:
            return False
        rows=len(matrix)
        cols=len(matrix[0])
        i=0
        j=cols-1
        while j>=0 and i<rows:
            if matrix[i][j]>target:
                j-=1
            elif matrix[i][j]<target:
                i+=1
            else:
                return True
        return False

同 74. 搜索二维矩阵

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/611578.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LLM 论文】Step-Back Prompting:先解决更高层次的问题来提高 LLM 推理能力

论文&#xff1a;Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models ⭐⭐⭐⭐ Google DeepMind, ICLR 2024, arXiv:2310.06117 论文速读 该论文受到的启发是&#xff1a;人类再解决一个包含很多细节的具体问题时&#xff0c;先站在更高的层次上解…

【Git】Github创建远程仓库并与本地互联

创建仓库 点击生成新的仓库 创建成功后会生成一个这样的文件 拉取到本地 首先先确保本地安装了git 可以通过终端使用 git --version来查看是否安装好了git 如果显示了版本信息&#xff0c;说明已经安装好了git&#xff0c;这时候我们就可以进入我们想要clone到问目标文件夹 …

计算机系列之算法分析与设计

21、算法分析与设计 算法是对特定问题求解步骤的一种描述。它是指令的有限序列&#xff0c;其中每一条指令标识一个或多个操作。 它具有有穷性、确定性&#xff08;含义确定、输入输出确定&#xff0c;相同输入相同输出&#xff1b;执行路径唯一&#xff09;、可行性、输入&a…

【SAP ME 38】SAP ME发布WebService配置及应用

更多WebService介绍请参照 【SAP ME 28】SAP ME创建开发组件&#xff08;DC&#xff09;webService 致此一个WebService应用发布成功&#xff0c;把wsdl文件提供到第三方系统调用接口&#xff01; 注意&#xff1a; 在SAP ME官方开发中默认对外开放的接口是WebService接口&am…

01、vue+openlayers6实现自定义测量功能(提供源码)

首先先封装一些openlayers的工具函数&#xff0c;如下所示&#xff1a; import VectorSource from ol/source/Vector; import VectorLayer from ol/layer/Vector; import Style from ol/style/Style; import Fill from ol/style/Fill; import Stroke from ol/style/Stroke; im…

Android GPU渲染SurfaceFlinger合成RenderThread的dequeueBuffer/queueBuffer与fence机制(2)

Android GPU渲染SurfaceFlinger合成RenderThread的dequeueBuffer/queueBuffer与fence机制&#xff08;2&#xff09; 计算fps帧率 用 adb shell dumpsys SurfaceFlinger --list 查询当前的SurfaceView&#xff0c;然后有好多行&#xff0c;再把要查询的行内容完整的传给 ad…

题目----力扣--移除链表元素

题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输入&…

智慧公厕:让厕所管理变得更智慧、高效、舒适!

公共厕所是城市的重要组成部分&#xff0c;但常常被忽视。它们的管理和养护往往面临着许多问题&#xff0c;例如卫生状况不佳、环境畏畏缩缩、设施老旧等。为了解决这些问题&#xff0c;智慧公厕应运而生。智慧公厕是一种全方位的应用解决方案&#xff0c;将科技与公共厕所管理…

我在洛杉矶采访到了亚马逊云全球首席信息官CISO(L11)!

在本次洛杉矶举办的亚马逊云Re:Inforce全球安全大会中&#xff0c;小李哥作为亚马逊大中华区开发者社区和自媒体代表&#xff0c;跟着亚马逊云安全产品团队采访了亚马逊云首席信息安全官(CISO)CJ Moses、亚马逊副总裁Eric Brandwine和亚马逊云首席高级安全工程师Becky Weiss。 …

搜索的未来:OpenAI 的 GPT 如何彻底改变行业

搜索的未来&#xff1a;OpenAI 的 GPT 如何彻底改变行业 概述 搜索引擎格局正处于一场革命的风口浪尖&#xff0c;而 OpenAI 的 GPT 处于这场变革的最前沿。最近出现了一种被称为“im-good-gpt-2-chatbot”的神秘聊天机器人&#xff0c;以及基于 ChatGPT 的搜索引擎的传言&am…

【C++ 内存管理】深拷贝和浅拷贝你了解吗?

文章目录 1.深拷贝2.浅拷贝3.深拷贝和浅拷贝 1.深拷贝 &#x1f34e; 深拷⻉: 是对对象的完全独⽴复制&#xff0c;包括对象内部动态分配的资源。在深拷⻉中&#xff0c;不仅复制对象的值&#xff0c;还会复制对象所指向的堆上的数据。 特点&#xff1a; &#x1f427;① 复制对…

DCDC中MOS半桥的自举电容,自举电阻问题

一个免费的翻译英文文章的网站&#xff0c;可以将英文数据手册翻译为中文&#xff08;需要挂梯子&#xff0c;不收费&#xff0c;无广告&#xff0c;不需要注册&#xff09;&#xff0c;链接如下&#xff1a; Google 翻译 翻译效果&#xff1a; // 104电容是0.1uf&#xff1b…

Spring AOP(2)

目录 Spring AOP详解 PointCut 切面优先级Order 切点表达式 execution表达式 切点表达式示例 annotation 自定义注解MyAspect 切面类 添加自定义注解 Spring AOP详解 PointCut 上面代码存在一个问题, 就是对于excution(* com.example.demo.controller.*.*(..))的大量重…

Tomcat中服务启动失败,如何查看启动失败日志?

1. 查看 localhost.log 这个日志文件通常包含有关特定 web 应用的详细错误信息。运行以下命令查看 localhost.log 中的错误&#xff1a; sudo tail -n 100 /opt/tomcat/latest/logs/localhost.YYYY-MM-DD.log请替换 YYYY-MM-DD 为当前日期&#xff0c;或选择最近的日志文件日…

【notepad++】使用

1 notepad 下载路径 https://notepad-plus.en.softonic.com/download 2 设置护眼模式 . 设置——语言格式设置——前景色——黑色 . 背景色——RGB &#xff1a;199 237 204 . 勾选“使用全局背景色”、“使用全局前景色” . 保存并关闭

YOLOv5改进 | 注意力机制 | 理解全局和局部信息的SE注意力机制

在深度学习目标检测领域&#xff0c;YOLOv5成为了备受关注的模型之一。本文给大家带来的是能够理解全局和局部信息的SE注意力机制。文章在介绍主要的原理后&#xff0c;将手把手教学如何进行模块的代码添加和修改&#xff0c;并将修改后的完整代码放在文章的最后&#xff0c;方…

RAG查询改写方法概述

在RAG系统中&#xff0c;用户的查询是丰富多样的&#xff0c;可能存在措辞不准确和缺乏语义信息的问题。这导致使用原始的查询可能无法有效检索到目标文档。 因此&#xff0c;将用户查询的语义空间与文档的语义空间对齐至关重要&#xff0c;目前主要有查询改写和嵌入转换两种方…

代码随想录算法训练营第六十天| LeetCode647. 回文子串 、516.最长回文子序列

一、LeetCode647. 回文子串 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0647.%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.html 状态&#xff1a;已解决 1.思路 这道题我只想出来了暴力解法&#xff0c;动规解法并没有想出来。根据视频讲解才把它想出来。…

【hackmyvm】 Animetronic靶机

靶机测试 arp-scanporturl枚举exiftool套中套passwordsudo 提权 arp-scan arp-scan 检测局域网中活动的主机 192.168.9.203 靶机IP地址port 通过nmap扫描&#xff0c;获取目标主机的端口信息 ┌──(root㉿kali)-[/usr/share/seclists] └─# nmap -sT -sV -O 192.16…

基于springboot+vue+Mysql的体质测试数据分析及可视化设计

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…
最新文章