递归:
斐波拉契数列:
在有重复子问题的时候,递归不好用,需要进行判断或者记录重复的子问题。
分治
50.
算x的n次方
class Solution:
def myPow(self, x: float, n: int) -> float:
if n == 0:
return 1
if n == 1:
return x
if n < 0:
return 1/self.myPow(x,-n)
if n % 2 == 1:
return x*self.myPow(x,n-1)
else:
return self.myPow(x*x,n/2)
解法二:
把n换成二进制数,如果与1 按位与 为1,则n为单数,否则为偶数
若此位为1,则额外结果乘多的x再左移
若此位变为0,则相当于变成x^2
最后当n=1的时候,
max(iterable, *[, default=obj, key=func]) -> value max(arg1, arg2, *args, *[, key=func]) -> value
169:求众数
class Solution:
def majorityElement(self, nums: List[int]) -> int:
dic = defaultdict(int)
#统计每个数字出现的次数
for num in nums:
dic[num] += 1
#返回出现次数最多的num, 即返回字典中最大value对应的key
return max(dic, key=dic.get)
mask=max(dic1) mask2=max(dic1,key=dic1.get)
思路: