leetcode刷題筆記八十八題 合併兩個有序陣列
阿新 • • 發佈:2020-07-28
leetcode刷題筆記八十八題 合併兩個有序陣列
源地址:88. 合併兩個有序陣列
問題描述:
你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為一個有序陣列。
說明:
初始化 nums1 和 nums2 的元素數量分別為 m 和 n 。
你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。示例:
輸入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3輸出: [1,2,2,3,5,6]
/** 本題解法較多,這裡採用的是暫不移動nums1中的元素,選擇自後向前合併陣列 時間複雜度 O(m+n) 空間複雜度 O(1) */ object Solution { def merge(nums1: Array[Int], m: Int, nums2: Array[Int], n: Int): Unit = { var nums1Pos = m-1 var nums2Pos = n-1 for(i <- (0 to m+n-1).reverse){ if (nums1Pos >= 0 && nums2Pos >= 0){ if(nums1(nums1Pos) >= nums2(nums2Pos)){ nums1(i) = nums1(nums1Pos) nums1Pos -= 1 } else{ nums1(i) = nums2(nums2Pos) nums2Pos -= 1 } } else if (nums1Pos < 0){ nums1(i) = nums2(nums2Pos) nums2Pos -= 1 } } } }