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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章