题解 | 合并有序数组

如果在不开辟额外空间的条件下完成,需要对两个切片从后往前遍历,这样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
}
全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务