classSolution:deffindRepeatNumber(self, nums: List[int])->int:# 用set()判断是否重复,注意set添加元素要用add
setlist =set()for ele in nums:if ele notin setlist:
setlist.add(ele)else:return ele
# 排序,前后相同则为重复
nums.sort()for i inrange(len(nums)):if nums[i]==nums[i+1]:return nums[i]
classSolution:defreplaceSpace(self, s:str)->str:# 正常操作
res =''for ele in s:if ele ==' ':
res+='%20'else:
res+=ele
return res
# 使用python的api replacereturn s.replace(' ','%20')# 字符串按空格分开,然后用%20拼接
res = s.split(' ')return'%20'.join(res)
剑指offer 06 打印链表从尾到头
classSolution:defreversePrint(self, head: ListNode)-> List[int]:# 法一:python转换只需要[::-1]
res =[]while head:
res.append(head.val)
head = head.nextreturn res[::-1]# 法二:堆栈可以先入后出,解决链表只能从头到尾的问题
res =list()
result =[]while head:
res.append(head.val)
head = head.nextwhile res:
result.append(res.pop())return result
classCQueue:def__init__(self):
self.res =[]defappendTail(self, value:int)->None:# 添加元素
self.res.append(value)return self.res
defdeleteHead(self)->int:# 删除第一个元素,注意不是堆栈啦,所以不要用pop()if self.res ==[]:return-1
value = self.res[0]
self.res = self.res[1:]return value
剑指offer 10-I 斐波那契数列
classSolution:deffib(self, n:int)->int:# 法1: 设置一个list, 不断添加if n ==0:return0if n ==1:return1
res =[0,1]for i inrange(2,n+1):
tmp = res[i-1]+res[i-2]
res.append(tmp)return res[-1]%1000000007# 防止int32溢出,取模# 法2: 用python的替代法
a, b =0,1for i inrange(n):
a, b = b, a+b
return a %1000000007