#31852: 為甚麼會TLE


j09136@kcis.com.tw (Ethan Chiu邱柏叡)

學校 : 不指定學校
編號 : 154714
來源 : [118.163.88.49]
最後登入時間 :
2023-01-13 19:38:01
i213. stack 練習 | From: [114.43.164.45] | 發表日期 : 2022-08-23 23:56

num = int(input())
stack = []
for i in range(0, num):
    command = input()
    if len(command) == 1:
        command = int(command)
        if command == 2:
            if stack:
                print(stack[len(stack) - 1])
            else:
                print(-1)
        elif command == 3 and stack:
            temp = stack[len(stack) - 1]
            stack.remove(temp)
    else:
        temp = ""
        for i2 in range(2, len(command)):
            temp += command[i2]
        temp = int(temp)
        stack.append(temp)

想問一下問題在哪 測試執行是 ac 但第一個測資就會 TLE

 
#31898: Re: 為甚麼會TLE


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
i213. stack 練習 | From: [39.9.101.62] | 發表日期 : 2022-08-26 21:46

1.
            temp = stack[len(stack) - 1]
            stack.remove(temp)
2.
        for i2 in range(2, len(command)):
            temp += command[i2]

想問一下問題在哪 測試執行是 ac 但第一個測資就會 TLE


1. remove很慢,可以改成stack.pop(),改了這裡就能AC了

2. 這裡可以直接用temp = command[2:]就好了

3. 其他還有一些小地方還可以再稍微加速,不過幅度不大我就不一一指出了

 
ZeroJudge Forum