1.斐波那契数
class Solution:
def fib(self, n: int) -> int:
if n < 2:
return n
a, b = 0, 1
for i in range(2, n + 1):
a, b = b, a + b
return b
2.第 N 个泰波那契数
class Solution(object):
def tribonacci(self, n):
"""
:type n: int
:rtype: int
"""
T = [0, 1, 1]
for i in range(3, n+1):
T.append(T[i-1]+T[i-2]+T[i-3])
return T[n]
3.爬楼梯
class Solution:
def climbStairs(self, n: int) -> int:
if n<3:
return n
f1,f2=1,2
for _ in range(n-2):
f1+=f2
f1,f2=f2,f1
return f2
4.使⽤用最⼩小花费爬楼梯
class Solution:
def minCostClimbingStairs(self, cost):
"""
:type cost: List[int]
:rtype: int
"""
dp = {}
dp[0] = cost[0]
dp[1] = cost[1]
for i in range(2,len(cost)):
dp[i] = min(dp[i-2]+cost[i],dp[i-1]+cost[i])
return min(dp[len(cost)-1],dp[len(cost)-2])
5.买卖股票的最佳时机
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
if len(prices)==0:
return 0
num, mins=0, prices[0]
for i in prices:
if i>mins:
num = max(num,i-mins)
else:
mins = i
return num
6。最长公共子序列
class Solution:
def longestCommonSubsequence(self, text1: str, text2: str) -> int:
m=len(text1)
n=len(text2)
dp=[[0 for _ in range(n+1)] for _ in range(m+1)]
for i in range(1,m+1):
for j in range(1,n+1):
if text1[i-1]==text2[j-1]:
dp[i][j]=dp[i-1][j-1]+1
else:
dp[i][j]=max(dp[i-1][j],dp[i][j-1])
return dp[-1][-1]
7.杨辉三角形
n = int(input())
nums = [[0] * n for i in range(n)]
for i in range(n) :
for j in range(n) :
if j == 0 :
nums[i][j] = 1
else :
nums[i][j] = nums[i-1][j-1] + nums[i-1][j]
for i in range(n) :
for j in range(n) :
if nums[i][j] != 0 :
print(nums[i][j],end=" ")
print()
8.节点选择
def dfs(node,pre):
global value,table
for i in table.get(node):
if i !=pre:
dfs(i,node)
value[node][0]+=max(value[i][0],value[i][1])
value[node][1]+=value[i][0]
def main():
global value, table
n = int(input())
value = list(map(int, input().split()))
value = list(map(lambda x:[0,x],value))
value.insert(0,0)
table = {}
for i in range(n):
table.update({i + 1: []})
for i in range(n - 1):
father, child = list(map(int, input().split()))
table.get(father).append(child)
table.get(child).append(father)
print(table)
dfs(1,0)
print(max(value[1][0],value[1][1]))
if __name__=='__main__':
main()
9.耐摔指数
N = int(input())
hh, hhh = [0], [0]
hh.append(1)
hhh.append(1)
i = 1
while hh[i] < N:
i += 1
hh.append(hh[i - 1] + i)
j = 1
while hhh[j] < N:
j += 1
hhh.append(hh[j - 1] + 1 + hhh[j - 1])
print(min(i, j))
10.K好数
def add_1(num,x,y=0):
num[y]+=1
if(num[y]<x):
return num
else:
for i in range(y,len(num)):
if num[i]==x and i!=(len(num)-1):
num[i]=0
num[i+1]+=1
if(num[i+1]<x):
break
elif i==(len(num)-1):
num[i]=0
num.append(1)
break
return num
def check(num):
for i in range(len(num)):
if i==0:
if abs(num[0] - num[1]) == 1:
return [0,0]
elif i==len(num)-1:
if abs(num[i] - num[i - 1]) == 1:
return [i-1,0]
elif abs(num[i]-num[i+1])==1:
return [i,0]
return [0,1]
def main():
K,L=input().split()
K=int(K)
L=int(L)
if L==1:
print(K)
exit()
num=[ 0 for i in range(L)]
num[-1]=1
ans=0
while(len(num)==L):
index,judge=check(num)
if judge:
ans+=1
add_1(num, K)
else:
add_1(num,K,index)
print(ans)
if __name__=='__main__':
main()