技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2025 iThome 鐵人賽
DAY
18
0
自我挑戰組
從零開始學習LeetCode
系列 第
18
篇
Day 18 Rotate Array
17th鐵人賽
pinggg
2025-10-02 22:15:29
52 瀏覽
分享至
題目:給定一個長度為 n 的整數陣列 nums,以及一個整數 k,請將陣列「向右旋轉」k 步
解法一
直觀,但效率差
適合「第一次接觸」的同學練習
註解
nums.pop() → 移除並回傳陣列最後一個元素
nums.insert(0, last) → 插到陣列的最前面
重複 k 次後,陣列就被旋轉
理解
想像你有一列人排隊:
[1,2,3,4,5,6,7]
旋轉一次,就是把最後一個人(7)拉到最前面:
[7,1,2,3,4,5,6]
旋轉三次,就依序拉出 7、6、5 到最前面
這樣就得到結果 [5,6,7,1,2,3,4]
缺點是效率不好,因為每次 insert 都要移動其他元素
解法二
額外陣列
速度快,但需要 O(n) 額外空間
註解
(i + k) % n → 計算新位置,保證不會超出邊界
建立新陣列 newArr 來存放旋轉後的結果
最後再把結果覆蓋回原本 nums
理解
就像你要搬家:
每個人(數字)都有一個新位置(用公式算出來)
搬到新房子(newArr)後,再全部搬回舊房子(nums)
解法三
不需要額外空間,效率高
註解
reverse(start, end) → 自己寫一個函式,交換陣列前後元素
整體操作順序:
(1)[1,2,3,4,5,6,7] → [7,6,5,4,3,2,1]
(2)前 k=3 個反轉 → [5,6,7,4,3,2,1]
(3)後面反轉 → [5,6,7,1,2,3,4]
理解
就像把一張紙上的數字「翻轉」幾次:
(1)先把整張紙上下顛倒
(2)把前 k 個翻回來
(3)把後面翻回來
最後就得到「旋轉」的效果
留言
追蹤
檢舉
上一篇
Day 17 Move Zeroes
下一篇
Day 19 Move Zeroes II – Partition Array by Parity
系列文
從零開始學習LeetCode
共
30
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
26
Day 26 Valid Parentheses
27
Day 27 Longest Common Prefix
28
Day 28 Valid Palindrome
29
Day29 First Unique Character in a String
30
Day30 總結
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19843
篇
完賽人數
529
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
如何找到電腦網路行為的觸發原因?
檔案伺服器移轉
Exchange EMS掛掉導致Q信(2016)
從資訊安全角度分析:若電子支付平台疑遭暗網販售資料,可能的技術成因與防護機制?
win11 bitlocker 除了格式化重灌外, 有解嗎?
Exchange 2016 手機無法登入
Gmail 寄件備分 一次變成 Gmail聯絡人寄出
請問要如何將github下載下來的檔案轉成dll檔
熱門回答
檔案伺服器移轉
如何找到電腦網路行為的觸發原因?
從資訊安全角度分析:若電子支付平台疑遭暗網販售資料,可能的技術成因與防護機制?
熱門文章
Microsoft Certified: Azure Administrator Associate AZ-104認證考試介紹
📨 用 n8n 自動整理信用卡帳單:從 Gmail 到 LINE 的實戰筆記
Portainer:從入門到入土心得錄01
【專案實戰】我在專案裡,用需求追溯矩陣讓 PM、工程師和法遵站在同一頁
[Day 27]隨機密碼產生器
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}