2024.5.6 —— LeetCode 高频题复盘

目录

  • 283. 移动零
  • 153. 寻找旋转排序数组中的最小值
  • 468. 验证IP地址
  • 224. 基本计算器
  • 739. 每日温度
  • 138. 随机链表的复制
  • 47. 全排列 II
  • 207. 课程表
  • LCR 125. 图书整理 II

283. 移动零


题目链接

Python

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        n=len(nums)
        i=0
        for j in range(n):
            if nums[j]!=0:
                nums[i],nums[j]=nums[j],nums[i]
                i+=1 # i指向0,因为当前数字不为0才前进

153. 寻找旋转排序数组中的最小值


题目链接

Python

class Solution:
    def findMin(self, nums: List[int]) -> int:
        low,high=0,len(nums)-1
        while low<high:
            mid=(low+high)//2
            # 元素值互不相同
            if nums[mid]<nums[high]:
                high=mid
            else: # nums[mid]>nums[high]:
                low=mid+1
        return nums[low]

类似题目 33. 搜索旋转排序数组

468. 验证IP地址


题目链接

Python

class Solution:
    def validIPAddress(self, queryIP: str) -> str:

        def validIPv6(IP_string):
            IP_lst = IP_string.split(':')
            if len(IP_lst) != 8: # IPv6必须由8个子串组成
                return False
            for IP in IP_lst:
                if not 1 <= len(IP) <= 4: # 每个子串必须小于4个字符
                    return False
                for char in IP:
                    if not ('0' <= char <= '9' or 'a' <= char <= 'f' or 'A' <= char <= 'F'):
                        return False
            return True
        
        def validIPv4(IP_string):
            IP_lst = IP_string.split('.')
            if len(IP_lst) != 4: # IPv4必须由4个子串组成
                return False
            for IP in IP_lst:
                if not IP.isdigit() or not 0 <= int(IP) <= 255:
                    return False
                if str(int(IP)) != IP: # 不能有前导0
                    return False
            return True
        

        if queryIP.find(".") != -1:
            return 'IPv4' if validIPv4(queryIP) else 'Neither'
        else:
            return 'IPv6' if validIPv6(queryIP) else 'Neither'
        return 'Neither'

224. 基本计算器


题目链接

Python

class Solution:
    def calculate(self, s: str) -> int:
        ops=[1] # 栈顶元素记录了当前位置所处的每个括号所「共同形成」的符号
        sign=1 # 代表「当前」的符号
        res=0
        n=len(s)
        i=0
        while i<n:
            if s[i]==" ":
                i+=1
            elif s[i]=="+":
                sign=ops[-1]
                i+=1
            elif s[i]=="-":
                sign=-ops[-1]
                i+=1
            elif s[i]=="(":
                ops.append(sign)
                i+=1
            elif s[i]==")":
                ops.pop()
                i+=1
            else:
                num=0
                while i<n and s[i].isdigit():
                    num=num*10+ord(s[i])-ord("0")
                    i+=1
                res+=num*sign
        return res

进阶版 227. 基本计算器 II

739. 每日温度


题目链接

Python

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        res=[0]*len(temperatures)
        stack=[0]
        for i in range(1,len(temperatures)):
            if temperatures[stack[-1]]>=temperatures[i]:
                stack.append(i)
            else:
                while stack and temperatures[stack[-1]]<temperatures[i]:
                    res[stack[-1]]=i-stack[-1]
                    stack.pop()
                stack.append(i)
        return res

138. 随机链表的复制


题目链接

Python

"""
# Definition for a Node.
class Node:
    def __init__(self, x: int, next: 'Node' = None, random: 'Node' = None):
        self.val = int(x)
        self.next = next
        self.random = random
"""

class Solution:
    def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]':
        if not head:
            return None
        # 在每个原节点后面创建一个新节点
        # 1->1'->2->2'->3->3'
        cur=head
        while cur:
            new_node=Node(cur.val)
            new_node.next=cur.next
            cur.next=new_node
            cur=new_node.next
        # 设置新节点的随机结点
        cur=head
        while cur:
            if cur.random:
                cur.next.random=cur.random.next
            cur=cur.next.next
        # 将两个链表分开
        dummy=Node(0)
        cur=head
        pre=dummy
        while cur:
            pre.next=cur.next
            pre=pre.next
            cur.next=pre.next
            cur=cur.next
        return dummy.next

47. 全排列 II


题目链接

建议先做 46. 全排列

Python

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        path=[]
        res = []
        def backtrack(nums, used):
            if len(path)==len(nums):
                res.append(path[:])
                return
            for i in range(len(nums)):
                if i>0 and nums[i] == nums[i-1] and used[i-1]==False:
                    continue
                if not used[i]:
                    path.append(nums[i])
                    used[i] = True
                    backtrack(nums, used)
                    path.pop()
                    used[i] = False
        nums.sort()
        used=[False]*len(nums)
        backtrack(nums,used)
        return res

207. 课程表


题目链接

Python

class Solution:
    def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
        # 初始化邻接表
        adjacency=[[] for _ in range(numCourses)]
        # 初始化每个点的入度
        indegrees=[0 for _ in range(numCourses)]
        # 遍历prerequisites为邻接表、每个点的入度赋值
        for cur,pre in prerequisites:
            adjacency[pre].append(cur)
            indegrees[cur]+=1
        # 将所有入度为0的节点入队
        from collections import deque
        queue=deque()
        for i in range(numCourses):
            if indegrees[i]==0:
                queue.append(i)
        # 使用拓扑排序(依次将队列中入度为0的节点出队)
        while queue:
            pre=queue.popleft()
            numCourses-=1
            # 将pre后面的节点cur的入度统统-1
            for cur in adjacency[pre]:
                indegrees[cur]-=1
                if indegrees[cur]==0:
                    queue.append(cur)
        return not numCourses # 有环numCourses非0返回False
                              # 无环numCourses为0返回True

进阶版 210. 课程表 II

LCR 125. 图书整理 II


题目链接

类似题目 232. 用栈实现队列

Python

class CQueue:

    def __init__(self):
        self.stack1=[]
        self.stack2=[]

    def appendTail(self, value: int) -> None:
        self.stack1.append(value)

    def deleteHead(self) -> int:
        if self.stack2:
            return self.stack2.pop()
        if not self.stack1:
            return -1
        while self.stack1:
            self.stack2.append(self.stack1.pop())
        return self.stack2.pop()


# Your CQueue object will be instantiated and called as such:
# obj = CQueue()
# obj.appendTail(value)
# param_2 = obj.deleteHead()

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

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

相关文章

Unity数据持久化之Json

Json概述 Json是什么? 全称:JavaScript对象简谱(JavaScript Object Notation) Json是国际通用的一种轻量级的数据交换格式 主要在网络通讯中用于传输数据,或本地数据存储和读取 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率 我们一般使用Json文件来…

SF 不消费buffer

1、请求合成请求vsync MessageQueue.cpp 返回nextWakeupTime struct ArmingInfo { nsecs_t mActualWakeupTime; nsecs_t mActualVsyncTime; nsecs_t mActualReadyTime; }; 在schedule 请求vsync 时会根据算法计算出nextVsyncTime时间&#…

企业怎样进行IT外包以及IT外包服务内容

在数字化时代的浪潮中&#xff0c;企业逐渐认识到信息技术的关键作用&#xff0c;特别是制造业基地对于IT外包和运维服务的需求持续增长。然而&#xff0c;在诸多可供选择的IT外包和运维方案中&#xff0c;企业如何推动与IT外包公司的合作&#xff1f;本文将深入介绍IT外包方案…

Python解释器3.8.2版本安装详细教程

Python解释器提取链接链接&#xff1a; https://pan.baidu.com/s/1eDvwYmUJ4l7kIBXewtN4EA?pwd1111 提取码&#xff1a;1111 演示版本为3.6.8&#xff0c;链接安装包为3.8.2版&#xff0c;包中附加pytharm安装包。 1.双击提取好的python-exe安装文件&#xff0c;会…

泛型编程四:容器

文章目录 前言一、序列容器verctor 总结 前言 STL有六大部件&#xff0c;容器、算法、仿函数、迭代器、适配器和分配器。除了算法是函数模板&#xff0c;其他都是类模板。容器可以分为序列容器和关联容器。常见的序列容器有vector、array、deque、list、forward-list&#xff…

Ansible——playbook编写

一、简介 1.什么是playbook Ansible Playbook 是设定自动化任务的一种蓝图&#xff0c;可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。 Ansible Playbook 本质上是一些框架&#xff0c;是一些预先编…

C/C++ 入门(10)list类(STL)

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 欢迎来指教&#xff01; 一、标准库中的list 1、了解 list&#xff1a;是一个双向带头循环链表&#xff0c;不支持随机访问&#xff08;即下标访问&#xff09;&#xff0c;任意位置的插入删除效率高。 …

1.使用uniapp搭建微信小程序项目并引入前端组件资源

文章目录 1. 项目配置1.1. 新建vue3项目1.2. 关联云空间1.3. 运行到微信开发者工具 2. 前端组件2.1. uniCloud的内置组件和扩展组件2.2. uView3.02.3. 在uniapp项目引入uview3 1. 项目配置 1.1. 新建vue3项目 由于我们要使用vue3而不是vue2&#xff0c;所以要选好版本&#x…

1688数据分析实操技巧||1688商品数据采集接口 数据分析

今天&#xff0c;聊一聊B2B平台的数据分析&#xff0c;以1688国内站为例。 1688平台数据接口 1688也属于阿里巴巴的体系&#xff0c;跟淘宝天猫运营很像&#xff0c;因此很多淘宝天猫的玩法调整后也适用于1688。数据分析也是如此。 在1688搞数据分析&#xff0c;搞数据化运营可…

路由策略与路由控制

1.路由控制工具 匹配工具1&#xff1a;访问控制列表 &#xff08;1&#xff09;通配符 当进行IP地址匹配的时候&#xff0c;后面会跟着32位掩码位&#xff0c;这32位称为通配符。 通配符&#xff0c;也是点分十进制格式&#xff0c;换算成二进制后&#xff0c;“0”表示“匹配…

(二刷)代码随想录第1天|704. 二分查找 27. 移除元素

704. 二分查找 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode&#xff1a;704. 二分查找_哔哩哔哩_bilibili 给定一个 n 个元素有序的&#xff08;升序&#xff09…

(六)JSP教程——out对象

out对象是在JSP中经常使用到的对象&#xff0c;它本质上是一个输出流&#xff0c;前面已经多次使用&#xff0c;我们经常使用它的print()和println()方法&#xff0c;这些方法主要用于实现客户端数据的输出。通过out对象也可以直接向客户端发送一个由程序动态生成的HTML文件。 …

时序图详解

1.这是iic总线在回应时候的时序图&#xff0c;data in代表eeprom收到数据&#xff0c;回stm32的ack&#xff0c;数据回应&#xff0c;data out代表stm32收到eeprom的消息&#xff0c;数据输出ack回应 2.交叉线 代表在这一次输出高电平&#xff0c;或者在这一次也可能输出低电…

JAVA队列相关习题4

1. 用队列实现栈。 225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 一个队列无法实现栈 尝试使用两个队列 1)push元素的时候应当放在那里&#xff1f;哪个队列不为空就放在哪里 2&#xff09;出栈的时候&#xff0c;出不为空的队列size-1元素&#xff0c;剩余元…

学QT的第三天~

ikun登录界面完善 #include "mywidget.h" void MyWidget::bth1() { if(edit3 ->text()"520cxk"&&edit4 ->text()"1314520") { //1.实例化一个QmessageBox类的对象 QMessageBox box(QMessageBox::Information, //图标 "恭喜…

文字转语音软件下载教程

文字转语音软件下载教程 一&#xff0c;Whisper下载二&#xff0c;ggml-medium语言模型下载三&#xff0c;导入模型下载四&#xff0c;使用方法 一&#xff0c;Whisper下载 网址&#xff1a;https://bittly.cc/uL9xs 下拉选择&#xff1a; 进入下载页面&#xff0c;下载Whis…

分享一些跟客户降价时候可以用的方法

这几天碰到一个沙特的客户&#xff0c;一开始发了一个别人的设计图来问价格。因为产品都是根据图纸定制的&#xff0c;我就问他是否确定了场地&#xff0c;有没有详细的场地尺寸&#xff0c;客户说有&#xff0c;稍后就给。 过了一天&#xff0c;他就给了一个超大的尺寸&#x…

图像处理之SVD检测显示屏缺陷(C++)

图像处理之SVD检测显示屏缺陷&#xff08;C&#xff09; 文章目录 图像处理之SVD检测显示屏缺陷&#xff08;C&#xff09;前言一、SVD算法简介二、代码实现总结 前言 显示屏缺陷检测是机器视觉领域的一处较广泛的应用场景&#xff0c;显示屏主要有LCD和OLED&#xff0c;缺陷类…

爬虫:爬取豆瓣电影

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 上篇我们将到如何利用xpath的规则&#xff0c;那么这一次&#xff0c;我们将通过案例来告诉读者如何使用Xpath来定位到我们需要的数据&#xff0c;就算你不懂H5代码是怎么个嵌套或者十分复…

cesium 雷达遮罩(电弧球效果)

cesium 雷达遮罩(电弧球效果) 以下为源码直接复制可用 1、实现思路 通过修改“material”材质来实现轨迹球效果 2、代码示例 2.1 index.html <!DOCTYPE html> <html lang="en"><head><!
最新文章