1.第一题
这一道题的思路就是利用双指针遍历,一开始我是从0到c//2,发现有一个100000的测试用例会超时,结果应该是sqrt©。代码如下:
class Solution:
def judgeSquareSum(self, c: int) -> bool:
i=0
if c==1:
return True
j=int(math.sqrt(c))
demo=0
while i<=j:
demo=i*i+j*j
if demo==c:
return True
elif demo>c:
j-=1
else:
i+=1
return False
2.第二题
这道题快要裂开了,后面看评论学会将里面的重复时间保存下来的方法,代码如下:
class Solution:
def exclusiveTime(self, n: int, logs: List[str]) -> List[int]:
demo=[0]*n
if n==1:
m=logs[-1].split(':')
return [int(m[2])+1]
stack=[]
k=0
for i in logs:
a=i.split(':')
if a[1]=='start':
k+=1
stack.append([int(a[0]),int(a[2]),0])
else:
start=stack.pop()
k-=1
demo[start[0]]+=int(a[2])-start[1]+1-start[2]
if k>0:
stack[-1][2]+=int(a[2])+1-start[1]#该减去的重复时间
return demo