• Leetcode#88. Merge Sorted Array(合并两个有序数组)


    题目描述

    给定两个有序整数数组 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]
    

    思路

    思路一:

    从两个数组中的末尾开始进行合并,先找两个数组中较大的移动到正确的位置,将那个移动的位置值向前移动一个位置,再进行同样的操作,直到所有的元素处理完。

    代码实现

    package Array;
    
    /**
     * 88. Merge Sorted Array(合并两个有序数组)
     * 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
     */
    public class Solution88 {
        public static void main(String[] args) {
            Solution88 solution88 = new Solution88();
    
            solution88.merge();
        }
    
        /**
         * 从两个数组中的末尾开始进行合并,先找两个数组中较大的移动到正确的位置,将那个移动的位置值向前移动一个位置,再进行同样的操作,直到所有的元素处理完。
         *
         * @param nums1
         * @param m
         * @param nums2
         * @param n
         */
        public void merge(int[] nums1, int m, int[] nums2, int n) {
            int i = m - 1;
            int j = n - 1;
            int index = m + n - 1;
            while (i >= 0 && j >= 0) {
                if (nums1[i] > nums2[j]) {
                    nums1[index--] = nums1[i--];
                } else {
                    nums1[index--] = nums2[j--];
                }
            }
            while (j >= 0) {
                nums1[index--] = nums2[j--];
            }
        }
    }
    
    
  • 相关阅读:
    RTC驱动程序分析
    Linux下的RTC子系统
    [置顶] 谈EXPORT_SYMBOL使用
    《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile
    写出高效优美的单片机C语言代码
    哈夫曼树
    如何提高浮点数变整数的精度
    CF798C Mike and gcd problem
    CF822C Hacker, pack your bags!
    CF821C Okabe and Boxes
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/9612669.html
Copyright © 2020-2023  润新知