算法练习
qingyuliu_
这个作者很懒,什么都没留下…
展开
-
【简单】9、跳台阶
描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路:如果青蛙当前在第n级台阶上,那它上一步是在哪里呢?显然,由于它可以跳1级台阶或者2级台阶,所以它上一步必定在第n-1,或者第n-2级台阶,也就是说它跳上n级台阶的跳法数是跳上n-1和跳上n-2级台阶的跳法数之和。...原创 2021-10-15 16:52:36 · 176 阅读 · 0 评论 -
【简单】8、反转链表
输入一个链表,反转链表后,输出新链表的表头。方一:用数组把链表的每个元素都保存下来,翻转之后再重建链表。class Solution: # 返回ListNode def ReverseList(self, pHead): if not pHead: return pHead res=[] while pHead: res.append(pHead) #把每一个元素放入数组原创 2021-09-11 16:11:50 · 167 阅读 · 0 评论 -
【入门】7、螺旋矩阵
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。由于行列不相等,因此定义四个变量用于记录边界:左边界left右边界right上边界top下边界bottom然后以top和left基准层层打印,值得注意的是,为了避免重复打印,我们需要在打印下边和左边时额外判断一下top和bottom以及left和right是否相等:class Solution: def spiralOrder(self , matrix ): # write code原创 2021-09-10 16:22:16 · 524 阅读 · 0 评论 -
【入门】6、寻找峰值
山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。假设 nums[-1] = nums[n] = -∞。注意题目是:最大索引的山峰,而不是最大山峰的索引所以倒序遍历,找到第一个山峰直接break跳出循环class Solution: def solve(self , a ): length=len(a) index=0 for i in原创 2021-09-10 16:05:44 · 188 阅读 · 0 评论 -
【入门】5、缺失数字
描述从 0,1,2,…,n 这 n+1 个数中选择 n 个数,选择出的数字依然保持有序,找出这 n 个数中缺失的那个数,要求 O(n) 或 O(log(n)) 并尽可能小。方一:根据等差数列的求和公式思路:因为0-n个数里面只缺少一个数,所以可以直接对0-n求和,然后再减去该a数组的和就是答案了。class Solution: def solve(self , a ): length=len(a) sum1,sum2=0,0 for i in原创 2021-09-09 15:52:33 · 622 阅读 · 0 评论 -
【入门】4、最大公约数
方一:核心:gcb(a, b) = gcb(b, a%b)class Solution: def gcd(self , a , b ): if a%b == 0: return b else : return self.gcd(b,a%b)方二:暴力枚举不知道为什么通过率7/10class Solution: def gcd(self , a , b ): mi=mi.原创 2021-09-07 16:50:16 · 141 阅读 · 0 评论 -
【入门】3、反转字符串
描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)示例1输入:“abcd”复制返回值:“dcba”方一:切片class Solution: def solve(self , str ): revert=str return (revert[::-1])...原创 2021-09-07 15:30:11 · 60 阅读 · 0 评论 -
【入门】2、斐波那契数列
描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n\leq 39n≤39Python:class Solution: def Fibonacci(self, n): if n<=0: return 0 elif n==1: return 1 elif n==2: return 1 e原创 2021-09-03 17:45:43 · 167 阅读 · 0 评论 -
【入门】1、判断回文
描述给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。Python:方一:class Solution: def judge(self , str ): #if not str: # return True length=len(str) for i in range(length): if(str[i]!=str[len(str)-i-1]):原创 2021-09-03 17:43:43 · 478 阅读 · 0 评论