n=int(input()) lis=[] set1=[] for i in range(1,n+1): for j in range(1,n+1): for x in range(1,n+1): if i**2+j**2==x**2: set1.append(sorted([i,j,x])) for y in set1: if y not in lis: lis.append(y) print(len(lis))加速这段代码
时间: 2023-06-02 14:06:04 浏览: 141
可以对循环做一些优化,比如将循环边界从range(1,n+1)改成range(1,n),同时使用集合set来去重可以提高效率。修改后的代码如下:
n = int(input())
lis = []
set1 = set()
for i in range(1,n):
for j in range(1,n):
x = (i**2 + j**2)**0.5
if int(x)**2 == int(x**2): # 判断x是否为整数
set1.add(tuple(sorted([i,j,int(x)]))) # 使用元组
print(len(set1))
相关问题
n, k, s = map(int, input().split()) lis1 = [0 for i in range(s+1)] lis2 = [0 for i in range(s+1)] day = [i for i in range(n+1)] lis3 = [0 for i in range(n+1)] ans = 0 for i in range(1,s+1): lis1[i], lis2[i]= map(int, input().split()) for a in day: if a == lis1[i]: lis3[lis1.index(a)]+=lis2[i] for j in range(n+1): if lis3[j]>=k: ans+=1 print(n-ans) 帮我优化一下代码
n, k, s = map(int, input().split())
lis = [0] * n
for i in range(s):
a, b = map(int, input().split())
lis[a-1] = max(lis[a-1], b)
ans = sum(1 for x in lis if x < k)
print(ans)
a=input() lis=[] for i in a: lis.append(i) while lis==lis[::-1]: b=int(len(lis)/2) lis=lis[:b] print(len(lis))如何加速
该代码的运行速度?
这段代码可以进行优化,可以使用双指针算法来减少循环次数,例如:
a =()
lis = []
for i in a:
lis.append(i)
left, right = 0, len(lis) - 1
while left < right and lis[left] == lis[right]:
left += 1
right -= 1
print(left)
使用双指针算法可以将代码的时间复杂度从O(n)降低为O(n/2),从而加快程序运行的速度。
阅读全文