一、跳台阶
动态规划---类比于斐波那契数列
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)
class Solution:
def jumpFloor(self , number: int) -> int:
# write code here
if number < 3:
return number
else:
a,b=1,2
for i in range(number-2):
a,b=b,a+b
return b
二、岛屿数量
深度优先搜索
题目描述:给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。
class Solution:
def solve(self , grid ):
# write code here
if not grid:
return 0
def dfs(i, j):
grid[i][j] = '0'
for x, y in [(i-1,j), (i+1,j), (i, j-1), (i, j+1)]:
if 0 <= x < m and 0 <= y < n and grid[x][y] == '1':
dfs(x, y)
m, n = len(grid), len(grid[0])
res = 0
for i in range(m):
for j in range(n):
if grid[i][j] == '1':
res += 1
dfs(i, j)
return res