zoukankan      html  css  js  c++  java
  • 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--];
            }
        }
    }
    
    
  • 相关阅读:
    算法竞赛入门经典训练指南——UVA 11300 preading the Wealth
    hiho一下 第148周
    ajax总结及案例
    Spring事务
    Struts2拦截器介绍
    Struts2的拦截器----Dog实例
    Struts2文件的下载
    Struts2文件的上传
    Struts2类型转换
    Struts2 属性驱动、模型驱动、异常机制
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/9612669.html
Copyright © 2011-2022 走看看