LeetCode 2899. Last Visited Integers
雙周賽115。題目太臭長直接看範例亂寫,太粗心吃一個WA,好慘。
題目
輸入字串陣列words,其中words[i]是某個整數字串,或是”prev”。
從頭遍歷words,如果碰到”prev”,則找到在words上次訪問的整數:
- 令k為”prev”連續出現次的次數,nums為目前訪問過的整數陣列,而nums_reverse是nums的反轉陣列
- 位於nums_reverse[k-1]的元素就是當前”prev”所指的上次訪問的整數
- 如果k大於訪問過的整數數量,則回傳-1
回傳包含這些上次訪問整數的陣列。
解法
按照題意模擬,直接維護一個反轉的整數陣列nums,根據words[i]的內容做決定。
時間複雜度O(N)。
空間複雜度O(N)。
class Solution:
def lastVisitedIntegers(self, words: List[str]) -> List[int]:
nums=deque()
k=0
ans=[]
for w in words:
if w=="prev":
k+=1
if k>len(nums):
ans.append(-1)
else:
ans.append(nums[k-1])
else:
k=0
nums.appendleft(int(w))
return ans