今天到 好久不上的网站 领扣 看了一下
网站大变样 界面更加美观了 还新增了各种模式
然后我就想刷一下题目 试一下
杨辉三角
c语言的时候,使用 二维数组 两边填充 1 来解决的
杨辉三角的规律特别好摸
每一行的数 等于 上一行的数 + 上一行的数的前一个
每一行的 结尾 开头 都是 1
def yhsj(n): #定义一个函数 模块化功能 这个名字,随便起的
x=[1]
for i in range(n):
print(x)
x.append(1)
for j in range(1,int(len(x)/2)):
x[j]=x[j]+x[j-1]
yhsj(6)
#整体思路就是利用两个列表 按照规律 推演出 下一行的数
居然还有排名
肯定是大佬都不愿意做这样的题目,要么就是不喜欢用 python 嘿嘿 捡便宜了 这个 第 768 题
斐波那契数列
从0 开始 前一个数 + 后一个数 = 下一个数
0 1 1 2 3 5 8 13 21 34 55 89
就挺好办的
方法一
class Solution:
"""
@param n: an integer
@return: an ineger f(n)
"""
def fibonacci(self, n):
# write your code here
x=0
y=1
for i in range(1,n):
x,y=x+y,x # 限定范围 交换数据 python 语法简单 爱了爱了
return x
a1=Solution() #创建对象
a1.fibonacci(2) #调用成员函数
方法二
斐波那契数列 被推导出公式了 虽然我看不懂推导过程 但是我可以拿过来用啊
# 斐波那契数列通用公式1
import math
class Solution:
"""
@param n: an integer
@return: an ineger f(n)
"""
def fibonacci(self, n):
x1=math.sqrt(5)
n=n-1
x=1/x1*(((1+x1)*0.5)**n-((1-x1)*0.5)**n)
return int(x)
a1=Solution()
a1.fibonacci(10)
最后这个算法 时间复杂度为 O(1) 但是却没有 方法一 的评分高 有点伤