LeetCode之Merge Sorted Array(Kotlin)

163 阅读1分钟

问题:


方法: 题目重点是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)
}

有问题随时沟通

具体代码实现可以参考Github