2024.5.4 —— LeetCode 高频题复盘

目录

  • 14. 最长公共前缀
  • 128. 最长连续序列
  • 718. 最长重复子数组
  • 169. 多数元素
  • 662. 二叉树最大宽度
  • 179. 最大数
  • 122. 买卖股票的最佳时机 II
  • 62. 不同路径
  • 226. 翻转二叉树
  • 227. 基本计算器 II

14. 最长公共前缀


题目链接

Python

解法一

class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:if not strs:return ""min_str = min(strs)max_str = max(strs)for i in range(len(min_str)):if min_str[i]!=max_str[i]:return min_str[:i]return min_str

解法二

class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:s=""for t in zip(*strs):if len(set(t))==1: s+=t[0]else:breakreturn s

zip(*iterables):创建一个聚合了来自每个可迭代对象中的元素的迭代器。 返回一个元组的迭代器,其中的第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素。 当所输入可迭代对象中最短的一个被耗尽时,迭代器将停止迭代。 当只有一个可迭代对象参数时,它将返回一个单元组的迭代器。 不带参数时,它将返回一个空迭代器。

strs = ["flower", "flow", "flight"]
for i in zip(*strs):print(i)

输出

('f', 'f', 'f')
('l', 'l', 'l')
('o', 'o', 'i')
('w', 'w', 'g')

128. 最长连续序列


题目链接

Python

class Solution:def longestConsecutive(self, nums: List[int]) -> int:# 哈希表法longest_streak=0nums_set=set(nums)for num in nums_set:if num-1 not in nums_set:current_num=numcurrent_streak=1while current_num+1 in nums_set:current_streak+=1current_num+=1longest_streak=max(longest_streak,current_streak)return longest_streak

如果已知有一个 x,x+1,x+2,⋯ ,x+y 的连续序列,而我们却重新从 x+1,x+2或者是 x+y 处开始尝试匹配,那么得到的结果肯定不会优于枚举 x为起点的答案,因此我们在外层循环的时候碰到这种情况跳过即可。

那么怎么判断是否跳过呢?由于我们要枚举的数 x 一定是在数组中不存在前驱数 x−1 的,不然按照上面的分析我们会从x−1 开始尝试匹配,因此我们每次在哈希表中检查是否存在x−1 即能判断是否需要跳过了。

718. 最长重复子数组


题目链接

Python

class Solution:def findLength(self, nums1: List[int], nums2: List[int]) -> int:# dp[i][j]:以下标i-1为结尾的nums1和以下标j-1为结尾的nums2的最长重复子数组的长度m=len(nums1)n=len(nums2)# dp=[[0]*(n+1) for _ in range(m+1)]dp=[[0 for _ in range(n+1)] for _ in range(m+1)]res=0for i in range(1,m+1):for j in range(1,n+1):if nums1[i-1]==nums2[j-1]:dp[i][j]=dp[i-1][j-1]+1res=max(res,dp[i][j])return res

注意区别于 1143. 最长公共子序列

169. 多数元素


题目链接

Python

class Solution:def majorityElement(self, nums: List[int]) -> int:votes=0for num in nums:if votes==0:x=numvotes+= 1 if num==x else -1return x

参考题解 摩尔投票。

662. 二叉树最大宽度


题目链接

Python

# 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 widthOfBinaryTree(self, root: Optional[TreeNode]) -> int:ans=1arr=[[root,1]]while arr:temp=[]for node,index in arr:if node.left:temp.append([node.left,index*2])if node.right:temp.append([node.right,index*2+1])ans=max(ans,arr[-1][1]-arr[0][1]+1)arr=tempreturn ans

179. 最大数


题目链接

Python

class Solution:def largestNumber(self, nums: List[int]) -> str:"""由于a+b与b+a等长拼接得到的字符串结果更大的话,那么原本的整型的数字拼接结果也一定更大"""strs = list(map(str, nums))def cmp(a,b):if a+b==b+a:return 0if a+b>b+a:return 1if a+b<b+a:return -1strs.sort(key=functools.cmp_to_key(cmp),reverse=True)return "".join(strs) if strs[0]!="0" else "0"

122. 买卖股票的最佳时机 II


题目链接

Python

class Solution:def maxProfit(self, prices: List[int]) -> int:# dp[i][0]不持有,dp[i][1]持有dp=[[0,0] for _ in range(len(prices))]dp[0][1]=-prices[0]for i in range(1,len(prices)):dp[i][1]=max(dp[i-1][1],dp[i-1][0]-prices[i])dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i])return dp[len(prices)-1][0]

62. 不同路径


题目链接

Python

class Solution:def uniquePaths(self, m: int, n: int) -> int:dp=[[0 for i in range(n)] for j in range(m)]for i in range(m):dp[i][0]=1for j in range(n):dp[0][j]=1for i in range(1,m):for j in range(1,n):dp[i][j]=dp[i-1][j]+dp[i][j-1]return dp[m-1][n-1]

226. 翻转二叉树


题目链接

Python

# 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 invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:if not root:return queue=[root]while queue:temp=[]for node in queue:node.left,node.right=node.right,node.leftif node.left:temp.append(node.left)if node.right:temp.append(node.right)queue=tempreturn root

227. 基本计算器 II


题目链接

Python

class Solution:def calculate(self, s: str) -> int:n=len(s)nums=[]preSign="+"  # 初始化第一个数字的符号为“+”num=0for i,c in enumerate(s):if c.isdigit():num=num*10+int(c) # s中用于计算的数不一定只有一位数字if i==n-1 or c in "+-*/":if preSign=="+":nums.append(num)elif preSign=="-":nums.append(-num)elif preSign=="*":nums.append(nums.pop()*num)else: # 题目要求【整数除法仅保留整数部分】也就是直接截断,int# nums.append(nums.pop()//num))nums.append(int(nums.pop()/num))preSign=cnum=0return sum(nums)

注意:python易错知识点之int取整和//取整

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp——阻止冒泡

点击事件阻止冒泡 click.stop"onSubmit"其他类型&#xff0c;比如视频&#xff1a; 最后加了一个 click.stop <view class"videoBox" v-if"item.video_url"><video :src"i.image(item.video_url)" :controls"true&quo…

软件测试实战项目(含电商、银行、APP等)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天给大家带来几个软件测试项目的实战总结及经验&#xff0c;适…

初学python记录:力扣1652. 拆炸弹

题目&#xff1a; 你有一个炸弹需要拆除&#xff0c;时间紧迫&#xff01;你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。 为了获得正确的密码&#xff0c;你需要替换掉每一个数字。所有数字会 同时 被替换。 如果 k > 0 &#xff0c;将第 i 个数字用…

JUC下的ScheduledThreadPoolExecutor详解

ScheduledThreadPoolExecutor是Java并发编程框架中一个强大且灵活的线程池实现&#xff0c;专为定时与周期性任务而设计。作为ThreadPoolExecutor的子类&#xff0c;它不仅继承了线程池管理的高效与灵活性&#xff0c;还内置了基于优先级队列的延迟任务调度机制&#xff0c;支持…

将一层的json转成拼接的query字符串

方法: 封装方法手写利用第三方库 qs利用浏览器api- URLSearchParams 记录一下URLSearchParams const a new URLSearchParams({bar:foo,foo:20}) a.toString() // barfoo&foo20

基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真。基于模糊PI控制算法的龙格-库塔&#xff08;Runge-Kutta, RK&#xff09;连续搅拌釜反应器&#xff08;Co…

景源畅信电商:抖音小店需要请专业人员装修店铺吗?

在数字营销的海洋中&#xff0c;抖音小店如一艘航船&#xff0c;装修得当才能吸引顾客登船。那么&#xff0c;小店是否需要请专业人员来装修呢?答案是肯定的。 一、视觉冲击力是关键 专业设计师擅长运用色彩、布局与图像创造出强烈的视觉冲击力&#xff0c;这对于抓住用户的注…

费用报销(01背包

题目 #include<bits/stdc.h> using namespace std; #define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) int n,m,k; struct node {int m,d,v; }a[1007]; int mon[13]{0,31,28,31,30,31,30,31,31,30,31,30,31}; int dp[1007][2],mm[13],mx; map<int,int…

2024vue官方生态最全整理

👩 个人主页:程序媛夏天 🙋‍♂️ 作者简介:前端领域新星创作者、CSDN内容合伙人、自媒体职场博主,专注于前端各领域技术,成长的路上共同学习共同进步,一起加油呀! ✨系列专栏:前端面试宝典、JavaScript进阶、vue实战 📢 资料领取:前端进阶资料以及文中源码可以在…

【四、性能测试】性能测试基础与几个重要的概念

你好&#xff0c;我是山茶&#xff0c;一个95后在职程序员。也是一个目标跟 1000 程序员探索出 AI 测试 副业之路的 bro&#xff0c;欢迎跟我一起沟通交流&#xff01; 一、什么是性能测试&#xff1f; 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来…

【Linux——Centos7安装RabbitMQ】 RabbitMQ无法连接

到这一步是基本已经装好了&#xff0c;现在是在开放端口&#xff0c;我这个报错是因为我的防火墙是处于关闭状态&#xff0c;所以在开放端口时会报防火墙为运行&#xff0c;把防火墙打开&#xff0c;在开放端口&#xff0c;就可以访问到了 重启防火墙&#xff1a; systemctl …

MATLAB的Bar3函数调节渐变色

一. colormap函数 可以使用colormap函数: t1=[281.1,584.6, 884.3,1182.9,1485.2; 291.6,592.6,896,1197.75,1497.33; 293.8,596.4,898.6,1204.4,1506.4; 295.8,598,904.4,1209.0,1514.6];bar3(t1,1) set(gca,XTickLabel,{300,600,900,1200,1500},FontSize,10) set(gca,YTic…

常见C语言基础题说明一

一. 简介 整理一些C语言常见的基础笔试题。 假如系统是 32位计算机的情况下&#xff0c;字节对齐方式为 4字节对齐。计算如下题目。 二. 常见C语言基础笔试题 1. 计算 sizeof(数组名)&#xff0c; sizeof(指针)&#xff0c;strlen(数组名) 大小 计算如下的变量的值&…

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现&#xff1a;4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…

JavaScript检测数组类型

在JavaScript中&#xff0c;可以使用typeof操作符检测一个变量的数据类型。对于数组类型来说&#xff0c;typeof操作符返回的结果是"object"。 虽然typeof操作符可以用来检测数组类型&#xff0c;但它并不能区分数组和其他对象类型。为了准确地检测一个变量是否是数…

Verilog 触发器状态机语言描述-条件语句

条件语句 调试探针条件 调试探针条件可在双向或三向分支条件语句中使用。每个调试探针条件都占用调试探针连接到的 ILA 的 PROBE 端口上 的 1 个触发器比较器。 重要提示 &#xff01; 每个 PROBE 端口都可包含 1 到 16 个触发器比较器 &#xff08; 在编译时配置 &a…

MySQL调优-01反范式化表设计

MySQL调优-01反范式化表设计 数据库设计三范式 第一范式&#xff08;1NF&#xff09;。确保数据库表的每一列都是不可分割的原子数据项&#xff0c;即列中不可包含数组、记录等非原子数据项&#xff1b;确保表中没有重复的属性或列&#xff0c;每个属性只出现一次&#xff0c;…

技术速递|介绍 .NET MAUI 社区工具包 v8 :包含 TouchBehavior 支持!

作者&#xff1a;Gerald Versluis 排版&#xff1a;Alan Wang .NET MAUI 社区工具包团队很自豪地向您介绍 .NET MAUI 社区工具包的第 8 版&#xff01; 在这个最新的主要版本中&#xff0c;我们为您带来了备受期待的 TouchBehavior&#xff08;以前称为 TouchEffect&#xff0…

Hutool 只复制不为空的属性

在使用 Hutool 的工具类进行复制时&#xff0c;有时候需要只复制不为空的属性。 比如在修改时&#xff0c;先把数据库中的数据查出来&#xff1a; SysArea sysArea getById(dto.getId());此时再以传入值复制到数据库表对象中&#xff0c;但如果传入值中有属性为null&#xf…

MM模块学习一(供应商创建,物料类型的定义及功能)

物料管理流程&#xff1a; 源头&#xff1a;采购需求->采购申请 MRP&#xff1a;物料需求计划。运行物料需求计划的结果&#xff0c;根据物料的性质来判断是外购&#xff08;采购申请&#xff09;或者是生产&#xff08;计划订单->生产订单&#xff09;。 采购申请&am…