iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
自我挑戰組

Leetcode 自學系列 第 22

自學Leetcode Day22

  • 分享至 

  • xImage
  •  

88. Merge Sorted Array
1.題目說明:給兩個遞增排序的整數陣列 nums1 和 nums2,以及兩個整數 m 和 n,表示 nums1 有 m 個有效元素,nums2 有 n 個有效元素。

請你把 nums2 合併到 nums1 裡面,使 nums1 仍為一個「遞增排序」的陣列。
注意:

  • nums1 的長度已經足夠容納所有元素(即 nums1.length = m + n)。
  • 必須 原地(in-place)修改 nums1。
    2.解題思路:從「後面」往前合併
    因為 nums1 的尾端有空間(多出 n 個位置),
    如果從前面合併會覆蓋掉尚未處理的值。
    三個指標:
  • i = m - 1 → 指向 nums1 有效部分的最後一個元素
  • j = n - 1 → 指向 nums2 的最後一個元素
  • k = m + n - 1 → 指向 nums1 最後一格(準備填入最大值)
    比較 nums1[i] 和 nums2[j]:
  • 若 nums1[i] > nums2[j] → 把 nums1[i] 填入 nums1[k]
  • 否則把 nums2[j] 填入 nums1[k]
    每次 k--,i 或 j 對應減一。
    3.範例:
    輸入:
    nums1 = [1,2,3,0,0,0], m = 3
    nums2 = [2,5,6], n = 3
    執行過程:
    i=2 (→3), j=2 (→6), k=5
    nums1[i]<nums2[j] → nums1[5]=6, j=1, k=4

i=2 (→3), j=1 (→5), k=4
nums1[i]<nums2[j] → nums1[4]=5, j=0, k=3

i=2 (→3), j=0 (→2), k=3
nums1[i]>nums2[j] → nums1[3]=3, i=1, k=2

i=1 (→2), j=0 (→2), k=2
nums1[i]<=nums2[j] → nums1[2]=2, j=-1, k=1

結果:nums1 = [1,2,2,3,5,6]
4.程式碼截圖:https://ithelp.ithome.com.tw/upload/images/20251005/20169241QNfBkmFrYD.png
5.學習心得:這次的題目對我來說比較陌生,之前比較沒做過類似的題目,但我還是藉由AI的輔助去學習,有比解了解這題的解題思路及運用的技巧。


上一篇
自學Leetcode Day21
下一篇
自學Leetcode Day23
系列文
Leetcode 自學23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言