前往
大廳
主題

LeetCode - 2295. Replace Elements in an Array 解題心得

Not In My Back Yard | 2023-10-06 12:00:01 | 巴幣 0 | 人氣 91

題目連結:


題目意譯:
你被給定一個索引值從 0 開始的陣列 nums 其由 n 個彼此相異的正整數所組成。請套用 m 次操作到此陣列,其中在第 i 次操作中你將數字 operations[i][0] 替換成 operations[i][1]。

保證在第 i 次操作中:
operations[i][0] 存在於 nums 中。
operations[i][1] 不存在於 nums 中。

回傳套用所有操作後得到的陣列。

限制:
n == nums.length
m == operations.length
1 ≦ n, m ≦ 10 ^ 5
nums 中所有數值彼此相異。
operations[i].length == 2
1 ≦ nums[i], operations[i][0], operations[i][1] ≦ 10 ^ 6
operations[i][0] 在套用第 i 次操作時將必定存在於 nums 中。
operations[i][1] 在套用第 i 次操作時將必定不存在於 nums 中。



範例測資:
範例 1:
輸入: nums = [1,2,4,6], operations = [[1,3],[4,7],[6,1]]
輸出: [3,2,7,1]
解釋: 我們執行以下操作於 nums:
- 將數字 1 替換成 3。nums 變成 [3,2,4,6]。
- 將數字 4 替換成 7。nums 變成 [3,2,7,6]。
- 將數字 6 替換成 1。nums 變成 [3,2,7,1]。
我們回傳最終陣列 [3,2,7,1]。
We return the final array [3,2,7,1].

範例 2:
輸入: nums = [1,2], operations = [[1,3],[2,1],[3,2]]
輸出: [2,1]
解釋: 我們執行以下操作於 nums:
- 將數字 1 替換成 3。nums 變成 [3,2]。
- 將數字 2 替換成 1。nums 變成 [3,1]。
- 將數字 3 替換成 2。nums 變成 [2,1]。
我們回傳最終陣列 [2,1]。


解題思維:
將每個數字對應於 nums 中的索引值存成一個陣列 T,然後接著模擬整個操作過程即可——也就是同時更改 T 和 nums 的對應內容。而因為題目的條件,因此每次修改到的 nums 元素只會有一個,因此單次操作為時間複雜度 O(1)。最後便可以得到 nums 的最終結果。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作