ETH官方钱包

前往
大廳
主題

LeetCode - 2974. Minimum Number Game 解題心得

Not In My Back Yard | 2025-04-15 12:00:01 | 巴幣 2 | 人氣 34

題目連結(jié):


題目意譯:
你被給定一個索引值從 0 開始且長度為偶數(shù)的整數(shù)陣列 nums,以及一個空陣列 arr。Alice 和 Bob 決定玩一個遊戲,其中每一輪 Alice 和 Bob 會各自做一次某些操作。遊戲規(guī)則如下:
    每一輪中,首先 Alice 會從 nums 移除最小的元素;然後 Bob 做一樣的事情。
    現(xiàn)在,Bob 會將他移除的元素放到 arr 的尾端;然後 Alice 做一樣的事情。
    遊戲?qū)⒊掷m(xù)到 nums 變空為止。

回傳最後的陣列 arr。

限制:
2 ≦ nums.length ≦ 100
1 ≦ nums[i] ≦ 100
nums.length % 2 == 0



範例測資:
範例 1:
輸入: nums = [5,4,2,3]
輸出: [3,2,5,4]
解釋: 在第一輪中,Alice 移除了 2 而 Bob 移除了 3。接著 Bob 先放 3 到 arr 尾端,然後 Alice 再放 2 到尾端。因此 arr = [3,2]。
在第二輪的一開始 nums = [5, 4]。此時 Alice 移除了 4 而 Bob 移除了 5。兩人將移除的元素放到 arr 的尾端使其變成 [3,2,5,4]。

範例 2:
輸入: nums = [2,5]
輸出: [5,2]
解釋: 在第一輪中,Alice 移除了 2 而 Bob 移除了 5。接著 Bob 先放 5 到 arr 尾端,然後 Alice 再放 2 到尾端。因此 arr = [5,2]。


解題思維:
由於 nums 最長也才 100,因此直接模擬並直接每次都去找最小的兩個值是可行的。時間複雜度為 O(n ^ 2),其中 n 為 nums 之長度。



而仔細觀察一下便可以看到,實際上 arr 跟將數(shù)字由小排到大後的 nums 幾乎一樣,只是每兩個數(shù)字(nums[0] 配 nums[1] 、 nums[2] 配 nums[3] 等)交換了而已。因此我們可以直接將 nums 排序然後每兩個數(shù)字交換位置便可以得到 arr。時間複雜度為 O(n log n)。




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

作者相關(guān)創(chuàng)作

更多創(chuàng)作