leetcode刷题第9天

leetcode刷题第9天


1.第一题,爬楼梯问题
在这里插入图片描述
这道题是一个简单的动态规划问题,memo[i]=memo[i-1]+memo[i-2]代码如下:

class Solution:    
	def climbStairs(self, n: int) -> int:        
		memo=[0]*(n+1)        
		if n==1:            
			return 1        
		if n==2:            
			return 2        
		if n>2:            
			memo[1]=1            
			memo[2]=2            
			for i in range(3,n+1):                
				memo[i]=memo[i-2]+memo[i-1]                
		return memo[n]

2.矩阵置0
在这里插入图片描述
这道题的难点在于只能在原矩阵上进行操作,算法思路如下:
检查并标记第一行和第一列是否有0,设置两个变量firstcolhaszero和firstrowhaszero
使用第一行和第一列来标记其余行是否含有0
接下来,利用第一行和第一列的标0的情况,将矩阵中的数字标0
最后,处理第一行和第一列,如果firstcolhaszero=true则将第一列全部置为0,若firstrowhaszero为true则将第一行全部置为0
代码如下:

class Solution:    
	def setZeroes(self, matrix: List[List[int]]) -> None:        
	"""        
	Do not return anything, modify matrix in-place instead.       
	 """        
		firstcolhaszero=False        
		firstrowhaszero=False
        	#检查第一列是否有0        
        	for i in range(len(matrix)):            
        		if matrix[i][0]==0:                
        			firstcolhaszero=True        
        	#检查第一行是否有0        
        	for i in range(len(matrix[0])):            
        		if matrix[0][i]==0:                
        			firstrowhaszero=True        
        	#使用第一行和第一列来标记其余行列是否含有0        
        	for row in range(1,len(matrix)):            
        		for col in range(1,len(matrix[0])):                
        			if matrix[row][col]==0:                    
        			matrix[row][0]=0                    
        			matrix[0][col]=0        
       	 	#接下来使用第一行和第一列的标0情况将matrix中的数字标0        
       	 	for row in range(1,len(matrix)):            
       	 		for col in range(1,len(matrix[0])):                
       	 			if matrix[row][0]==0 or matrix[0][col]==0:                    
       	 				matrix[row][col]=0
        	#最后处理第一行和第一列        
        	if firstcolhaszero==True:            
        		for i in range(len(matrix)):                
        			matrix[i][0]=0        
        	if firstrowhaszero==True:            
        		for i in range(len(matrix[0])):                
        			matrix[0][i]=0                
        	return matrix
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值