万普插件库

jQuery插件大全与特效教程

合并两个有序数组

合并两个有序数组

  • 逆序双指针

题目描述

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

C++实现

func merge(nums1 []int, m int, nums2 []int, n int)  {
    i,j := m-1,n-1
    for k := m+n-1; k >= 0; k-- {
        if i>=0 && j >= 0 {
            if nums1[i] > nums2[j] {
                nums1[k] = nums1[i]
                i--
            } else {
                nums1[k] = nums2[j]
                j--
            }
        } else if j >= 0 {
            nums1[k] = nums2[j]
            j--
        }
    }
}

golang实现

func merge(nums1 []int, m int, nums2 []int, n int)  {
    i,j := m-1,n-1
    for k := m+n-1; k >= 0; k-- {
        if i>=0 && j >= 0 {
            if nums1[i] > nums2[j] {
                nums1[k] = nums1[i]
                i--
            } else {
                nums1[k] = nums2[j]
                j--
            }
        } else if j >= 0 {
            nums1[k] = nums2[j]
            j--
        }
    }
}
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言