Leetcode 第二天 20230315 python
创始人
2025-05-28 23:14:10
0

昨天的遗留问题:
深度遍历和广度优先遍历
在深度遍历中,定义一个全局变量记录结点是否被访问的值,利用递归回溯实现深度访问节点。
广度优先:定义数组标记节点访问状态,利用队列存储某个节点的邻接节点,当队列中节点全部出队表示该节点的邻接节点访问完毕,换另一个节点访问

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/flood-fill
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目733 图像渲染

有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。

你也被给予三个整数 sr , sc 和 newColor 。你应该从像素 image[sr][sc] 开始对图像进行 上色填充 。

为了完成 上色工作 ,从初始像素开始,记录初始坐标的 上下左右四个方向上 像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应 四个方向上 像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为 newColor 。

最后返回 经过上色渲染后的图像 。

class Solution:def floodFill(self, image: List[List[int]], sr: int, sc: int, color: int) -> List[List[int]]:n, m = len(image), len(image[0])currColor = image[sr][sc]def dfs(x: int, y: int):if image[x][y] == currColor:image[x][y] = colorfor mx, my in [(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)]:if 0 <= mx < n and 0 <= my < m and image[mx][my] == currColor:dfs(mx, my)if currColor != color:dfs(sr, sc)return image#用广度有限遍历que = collections.deque([(sr, sc)])image[sr][sc] = colorwhile que:x, y = que.popleft()for x_n,y_m in[(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)]:if 0 <= x_n < n and 0 <= y_m < m and image[x_n][y_m] == currColor:que.append((x_n,y_m))image[x_n][y_m] =colorreturn image

53 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。

思路 动态规划五部曲:
1 dp[i] 以i为结尾的最大连续子序列的和
2 递推公式 max(num[i] 延续前面的和 dp[i-1]+nums[i] ,前面的全部舍去nums[i] )
3 初始化: dp[0]=nums[0]
4 遍历顺序 for i in range(index,len(nums)): 顺推
5 打印数组

代码

class Solution:def maxSubArray(self, nums: List[int]) -> int:if len(nums)==0:return 0max_=0res=nums[0]for i in range(0,len(nums)):max_=max(max_+nums[i],nums[i])res=max(max_,res)return res

232 用栈实现队列

class MyQueue:def __init__(self):self.stack=[]def push(self, x: int) -> None:return self.stack.append(x)def pop(self) -> int:return self.stack.pop(0)def peek(self) -> int:return self.stack[0]def empty(self) -> bool:if len(self.stack)==0:return Trueelse:return False

278 第一个错误版本
思路:为减少调用次数,采用二分查找法实现

class Solution:def firstBadVersion(self, n: int) -> int:left=1right=nwhile left<=right:mid=(left+right)//2if isBadVersion(mid) and not isBadVersion(mid-1):return midelif isBadVersion(mid) and isBadVersion(mid-1):right=mid-1elif not isBadVersion(mid):left=mid+1

383 赎金信
思路:
利用 dict存储magazine中各字符存在的次数
代码

class Solution:def canConstruct(self, ransomNote: str, magazine: str) -> bool:ran={}mag={'sum':0}for i in magazine:if i not in mag:mag[i]=0else:mag[i]= mag[i]+1mag['sum']=mag['sum']+1for j in ransomNote:if j not in mag:return Falseelse:if mag[j] <0:return Falsemag[j]=mag[j]-1return True     

70 爬楼梯
通过在 n-1 阶的那块一次性爬 1 步来达到 n 楼层,以及通过在 n - 2 阶 一次性爬 2 步来达到 n 楼层。所以就是这两种情况的总和。

某阶楼梯的爬法等于前两种之和
#DP[i] 第i阶楼梯的爬法
# 递推公式: dp[i]=dp[i-1]+dp[i-2]
#初始值
#遍历顺序
#打印

class Solution:def climbStairs(self, n: int) -> int:d0=1d1=1if n==1:return 1d2=d0+d1for i in range(3,n+1):d0=d1d1=d2d2=d0+d1return d2

相关内容

热门资讯

南京中央商场收警示函,涉诉讼未... 11月21日,根据江苏证监局发布的决定,南京中央商场(集团)股份有限公司及其相关责任人祝珺、李尤、金...
张明:英国养老金体系——改革历... 张明系中国社会科学院金融研究所副所长、国家金融与发展实验室副主任、中国首席经济学家论坛理事 注:本文...
化解陈年旧债 卸下纠纷“包袱” 图为广西壮族自治区贺州市平桂区人民法院沙田人民法庭庭长蒙明双对易大姐进行判后答疑。 罗媚娟 摄 “蒙...
市人大代表建议优化上海外牌限行... 在长三角一体化的大背景下,城市交通管理政策对于区域经济发展和人员流动具有重要影响。上海市人大代表朱柯...
2025年11月化工专利律师,... 在当今竞争激烈的商业环境中,知识产权的保护对于化工、生物等行业以及拟上市企业来说至关重要。选择一位靠...
法律顾问能处理海事海商法律事务... 法律顾问能否处理海事海商法律事务 在当今复杂的商业环境中,海事海商活动频繁,其中涉及的法律问题错综...
“一口价”,为啥会引发纠纷? 新华视点 | 网约车“一口价”:“司乘两难”如何解? 近期,多地针对网约车低价竞争乱象,发布暂停“一...
原创 中... 联合国的最新表态令人精神一振,这种明确态度其实本就顺理成章。台湾自古属于中国,这是铁一般的事实,中国...
花800元就能买自己的死亡证明... 花800元就能买到 本人的精神诊断报告和死亡证明? 近日,“假证定制”业务 在多个电商和社交平台 死...
智能平台支撑政策落地 实达集团... 11月17日,福建省发展和改革委员会网站发布《福建省数据管理局关于印发〈福建省数据流通交易管理办法(...