问题:
方法:
题目重点是nums1的长度正好为m+n,所以可以直接将结果放入nums1中,但是需要从高位开始,因为高位为0不会影响低位的元素,然后遍历比较大小即可,因为nums1与nums2都是有序数组
package com.eric.leetcode
class MergeSortedArray {
fun merge(nums1: IntArray, m: Int, nums2: IntArray, n: Int): Unit {
var i = m - 1
var j = n - 1
var k = m + n -1
while (j >= 0 && i >= 0) {
if (nums1[i] >= nums2[j]) {
nums1[k] = nums1[i]
i--
k--
} else {
nums1[k] = nums2[j]
j--
k--
}
}
while (j >= 0) {
nums1[k] = nums2[j]
j--
k--
}
}
}
fun main() {
val nums1 = intArrayOf(1, 2, 3, 0, 0, 0)
val nums2 = intArrayOf(2, 5, 6)
val m = 3
val n = 3
val mergeSortedArray = MergeSortedArray()
mergeSortedArray.merge(nums1, m, nums2, n)
}
有问题随时沟通
网友评论