今天的内容还是一些涉及到数学知识的内容,包含了等差数列,等比数列以及斐波那契数列,尤其需要注意的是斐波那契数列问题,这是一个可变化并且会出现在任何一门语言里的题目。
509.斐波那契数
class Solution: def fib(self,n:int)->int: if n<2: return n F=[0]*(n+1) F[0]=1 F[1]=1 for i in range(2,n+1): F[i]=F[i-1]+F[i-2] return F[i]
1)当n小于2时,返回n;
2)之后建立一个列表,对索引为0,1的元素赋初值;
3)做循环遍历,按照斐波那契数列的公式写出方法体。
当然这道题目也可以使用递归的方法求解,有基础的话可以思考一下!
1137.第N个泰波那契数
class Solution: def tribonacci(self,n:int)->int: t=[0,1,1] for i in range(3,n+1): t.append(t[i-3]+t[i-2]+t[i-1]) return t[n]
这道题目与第一道有一些类似,不同的是对前三项进行了求和;
1)先建立一个列表,同时为前三项赋初值;
2)做循环,每次将前三项的和对应的值添加在列表末端;
3)根据n输出结果。
剑指Offer 64.求1+2+…+n的和
class Solution: def sumNums(self,n:int)->int: return int(n*(n+1)/2)
题目的本质就是等差数列求和,难点在于限制了我们对循环的使用;
1)直接返回等差数列求和公式,涉及到了数学知识在编程中的应用。
896.单调数列
class Solution: def isMonotonic(self,nums:List[int])->bool: nums_1=sorted(nums) if nums_1==nums or list(reversed(nums_1))==nums: return True return False
这道题目理解起来也是非常的容易,单调既有单调增又有单调减;
我的解法里面应用了Python的内置函数;
1)首先对给定的列表进行了排列;
2)如果该列表单调,则有两种可能,要么排列后和原列表相等,要么列表倒置后与其相等。
很巧的一个方法!
今天也是一些基础题,题目有相似之处但又不完全一样,学完知识之后做几道类似的题目也是能够熟练掌握了!
对你有帮助的话,还请点赞,有更好的想法的话,也可以评论分享!