leetcode刷题笔记八十八题 合并两个有序数组
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
}
}
}
}