leetcode-合并两个有序数组

文章目录

    • 题目
    • 解答
    • 优秀解答

题目

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:

输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3

输出: [1,2,2,3,5,6]

解答

/*
 * @lc app=leetcode.cn id=88 lang=java
 *
 * [88] 合并两个有序数组
 */

// @lc code=start
class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int[] s = new int[m + n];//定义一个新的数组,长度为两个原数组长度之和
        int i = 0, j = 0, count = 0;
        while (i < m && j < n) {
            if (nums1[i] < nums2[j]) {
                s[count++] = nums1[i++];
            } else {
                s[count++] = nums2[j++];
            }
        }

        if (i >= m) {//当第一个数组遍历完成,直接将第二个数组元素放入新数组
            while (j < n) {
                s[count++] = nums2[j++];
            }
        }
        if (j <= n) {//当第一个数组遍历完成,直接将第二个数组元素放入新数组
            while (i < m) {
                s[count++] = nums1[i++];
            }
        }
        for (int k=0;k

优秀解答

while(n>0) A[m+n-1] = (m==0||B[n-1] > A[m-1]) ? B[--n] : A[--m];

你可能感兴趣的:(leetcode刷题)