列表

详情


GP25. 合并有序数组

描述

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

知识点:
    1,for循环
    2,break中断循环
    3,append切片的追加

示例1

输入:

[1,2,3,0,0,0],3,[2,5,6],3

输出:

[1,2,2,3,5,6]

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Go 解法, 执行用时: 2ms, 内存消耗: 1068KB, 提交时间: 2022-07-21

package main
import "sort"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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 {
    // write code here
       for i:=m;i<m+n;i++ {
        nums1[i]=nums2[i-m]
    }
    sort.Ints(nums1)
    return nums1
}

Go 解法, 执行用时: 2ms, 内存消耗: 1076KB, 提交时间: 2022-07-19

package main
//import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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 {
    // write code here
    nums1 = append(nums1[:m],nums2[:n]...)
    return nums1
}

Go 解法, 执行用时: 2ms, 内存消耗: 1076KB, 提交时间: 2022-05-26

package main
//import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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 {
    // write code here
    if len(nums2)==0{
        return nums1
    }
    for i:=m+n-1;i>n-1;i--{
        nums1[i]=nums1[i-m]
    }
    var i int = 0
    var i1 int = n
    var i2 int = 0
    for ;i<m+n&&i1<m+n&&i2<n;i++{
        if nums1[i1]>nums2[i2]{
            nums1[i]=nums2[i2]
            i2++
        }else{
            nums1[i]=nums1[i1]
            i1++
        }
    }
    for ;i1<m+n;i1++{
        nums1[i]=nums1[i1]
        i++
    }
    for ;i2<n;i2++{
        nums1[i]=nums2[i2]
        i++
    }
    return nums1
}

Go 解法, 执行用时: 2ms, 内存消耗: 1088KB, 提交时间: 2022-07-18

package main

//import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @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 {
	// write code here
	var res []int
	i := 0
	j := 0
	for i < m && j < n {
		if nums1[i] < nums2[j] {
			res = append(res, nums1[i])
			i++
		} else {
			res = append(res, nums2[j])
			j++
		}
	}
	for i < m {
		res = append(res, nums1[i])
		i++
	}
	for j < n {
		res = append(res, nums2[j])
		j++
	}
	return res
}

Go 解法, 执行用时: 2ms, 内存消耗: 1196KB, 提交时间: 2022-06-20

package main
//import "fmt"
import "sort"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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 {
    // write code here
    arr := append(nums1[:m],nums2[:n]...)
    sort.Ints(arr)
    return arr
}

上一题