前往
大廳
主題

LeetCode - 2460. Apply Operations to an Array 解題心得

Not In My Back Yard | 2023-09-29 12:00:01 | 巴幣 0 | 人氣 94

題目連結:


題目意譯:
你被給定一個索引值從 0 開始且大小為 n 的陣列 nums,其由非負整數組成。

你需要執行 n - 1 次操作到該陣列上,其中在第 i 次操作(索引值從 0 開始),你將對 nums 的第 i 個元素執行以下操作:
如果 nums == nums[i + 1],則將 nums[i] 乘以 2 並將 nums[i + 1] 設為 0;反之,你將忽略此次操作。

在執行所有操作之後,將所有的 0 移到陣列的結尾。
例如,陣列 [1,0,2,0,0,1] 在將所有 0 移到結尾後將會是 [1,2,1,0,0,0]。

回傳最終的陣列。

注意到每次操作應依序執行,而不是同時執行。

限制:
2 ≦ nums.length ≦ 2000
0 ≦ nums[i] ≦ 1000



範例測資:
範例 1:
輸入: nums = [1,2,2,1,1,0]
輸出: [1,4,2,0,0,0]
解釋: 我們將執行以下操作:
- i = 0: nums[0] 和 nums[1] 不相等,所以我們忽略此次操作。
- i = 1: nums[1] 和 nums[2] 相等,所以我們將 nums[1] 乘以 2 並將 nums[2] 變為 0。陣列變成 [1,4,0,1,1,0]。
- i = 2: nums[2] 和 nums[3] 不相等,所以我們忽略此次操作。
- i = 3: nums[3] 和 nums[4] 相等,所以我們將 nums[3] 乘以 2 並將 nums[4] 變為 0。陣列變成 [1,4,0,2,0,0]。
- i = 4: nums[4] 和 nums[5] 相等,所以我們將 nums[4] 乘以 2 並將 nums[2] 變為 0。陣列變成 [1,4,0,2,0,0]。
之後,我們將所有 0 移動到結尾,得到陣列 [1,4,2,0,0,0]。

範例 2:
輸入: nums = [0,1]
輸出: [1,0]
解釋: 沒有操作可以執行,所以我們單純地將 0 移動到陣列的結尾。


解題思維:
就先單純地用迴圈掃過一次 nums 並根據題目要求做出操作即可。

接著用這題的方式把所有非零的元素擺到前面,而那些 0 自然就會被擠到結尾了。最後回傳該陣列即可。




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

創作回應

相關創作

更多創作