这次没有难题了。第一题5169.日期之间有多少天https://leetcode-cn.com/conte...其实应该是模拟方法计算天数。这里我直接使用python的datetime库来计算。有点作弊的嫌疑,不过可以通过。importdatetimeclass解决方案:defdaysBetweenDates(self,date1:str,date2:str)->int:d1=datetime.datetime.strptime(date1,'%Y-%m-%d')d2=datetime.datetime.strptime(date2,'%Y-%m-%d')returnabs((d2-d1).days)第二题5170.验证二叉树https://leetcode-cn.com/conte...确保有只有一个点的入度为0,其他点的入度都为1,整个图中没有环,是一棵树。为了防止0点不是根,计算所有点的入度,选择0的入度作为根(如果0的入度有多个,直接返回False)。如果一个点的入度大于1,它也返回False。遍历vis后发现环也返回Falseclass解决方法:defvalidateBinaryTreeNodes(self,n:int,leftChild:List[int],rightChild:List[int])->bool:f=[0]*ndefvis(i):ifi==-1:returnTrueiff[i]==1:returnFalsef[i]=1returnvis(leftChild[i])andvis(rightChild[i])foriinleftChild:ifi==-1:continuef[i]+=1foriinrightChild:ifi==-1:continuef[i]+=1rt=-1#print(f)foriinrange(n):如果f[i]==0:如果rt!=-1:返回假rt=ieliff[i]>1:返回假f=[0]*nvis(rt)ifsum(f)!=n:returnFalsereturnTrue第3题5171.最接近因子https://leetcode-cn.com/conte...方法很暴力,就是solve函数判断是否可以正分从sqrt(n)到1,且能整除的就是最小的差值。类解决方案:defclosestDivisors(self,num:int)->List[int]:defsolve(n):s=math.ceil(math.sqrt(n))foriinrange(s,1,-1):如果n%i==0:return[i,n//i]return[1,n]ans1=solve(num+1)ans2=solve(num+2)ifans2[1]-ans2[0]
