Python版本描述
显然,偶数台阶的跳法数等于之前所有奇数台阶的跳法数之和;
奇数台阶的跳法数等于之前所有偶数台阶的跳法数之和
故:
class Solution: def solve(self , n , m , a ): mask = a[::-1] wmatrix = [0 for i in range(n+1)] wmatrix[0] = 1 for i in range(1,n+1): if mask and i == mask[-1]: wmatrix[i] = 0 mask.pop() else: if i%2==0: #注:偶数台阶的跳法数等于之前所有奇数台阶的跳法数之和 wmatrix[i] = sum(wmatrix[1:i:2]) % (1e9+7) else: #注:奇数台阶的跳法数等于之前所有偶数台阶的跳法数之和 wmatrix[i] = sum(wmatrix[0:i:2]) % (1e9+7) return wmatrix[-1] % (1e9+7)