经过40多分钟才写出来,应该还是思路的问题。
但是通过了我就很开心
1 class Solution: 2 def judgeSquareSum(self, c: int) -> bool: 3 if c==0: 4 return True 5 6 i=int((c//2)**0.5) 7 j=int((c//2)**0.5)+1 8 while i<int(c**0.5)+1 and j>=0: 9 if i**2+j**2==c: 10 return True 11 elif i**2+j**2>c: 12 j=j-1 13 elif i**2+j**2<c: 14 i=i+1 15 else: 16 return False执行用时 :940 ms, 在所有 Python3 提交中击败了5.23%的用户 内存消耗 :13.8 MB, 在所有 Python3 提交中击败了8.44%的用户 举个例子: 假如c=78 因为c大于8**2,小于9**2, 所以遍历的时候 i 的大小最大也就是8。因为是两个数的平方和,所以最公平的就是i**2和j**2各占c/2。 所以i的起始值就是从根号c/2开始,到根号c结束; j从根号2/c+1开始,依次减小,到0结束。 遍历过程以及判断条件如程序中所示 ——2019.9.25