题解 | 合并有序数组

如果在不开辟额外空间的条件下完成,需要对两个切片从后往前遍历,这样nums1前面的数据就不会被nums2覆盖了

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums1 int整型一维数组 
 * @param m int整型 
 * @param nums2 int整型一维数组 
 * @param n int整型 
 * @return int整型一维数组
*/
func merge( nums1 []int ,  m int ,  nums2 []int ,  n int ) []int {
    i,j,q:=m-1,n-1,m+n-1
    for ;i>=0&&j>=0;{
        if nums1[i]>nums2[j]{
            nums1[q]=nums1[i]
            q--
            i--
        }else{
            nums1[q]=nums2[j]
            q--
            j--
        }
    }
    for ;j>=0;{
        nums1[q]=nums2[j]
        q--
        j--
    }
    return nums1
}
全部评论

相关推荐

xiao先森:本科生也不好就业,先专升本吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务