349. 两个数组的交集
使用set()方法就可以
熟悉字典和集合的常见操作
第202题. 快乐数
记住取一个数各个位上的数字方法,用 divmod 函数:
n,r=divmod(n,10)sum+=r**2(如果n大于三位数,每次只取余数加入,在循环
二:把数变成字符串,在int()每个数字
这种方法编程逻辑熟悉下
class Solution:
def isHappy(self, n: int) -> bool:
record=set()
while n not in record:
record.add(n)
n_str=str(n)
cur_sum=0
for i in n_str:
cur_sum+=int(i)**2
if cur_sum == 1:
return True
else: n=cur_sum
return False
1. 两数之和
第一次写的程序大体正确,不过有些案例解答错误,通过错误案例调试逐步发现问题,完善程序,最终全部通过,
383. 赎金信
熟悉count()方法和from colletions import Counter 函数
15. 三数之和
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
result=[]
nums.sort()
for i in range(len(nums)):
if nums[i] > 0:
return result (剪枝)
if i>0 and nums[i]==nums[i-1]: (去重操作)
continue
left=i+1
right=len(nums)-1
while left<right:
if nums[i]+nums[left]+nums[right]>0:
right-=1
elif nums[i]+nums[left]+nums[right]<0:
left+=1
else :
result.append([nums[i],nums[left],nums[right]])
while left<right and nums[right]==nums[right-1]:
right-=1
while left<right and nums[left]==nums[left+1]:(注意这里要用while,而不是if,if只处理一次去重,如果有多个重复,需要进行多次)
left+=1
left+=1
right-=1
return result
三数之和和四数之和,要注意去重和剪枝的操作