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]

    解题思路

    由于要合并到nums1数组中,为了利用好nums1数组后面的空位置,考虑从两个数组末尾开始比较合并,分别从最后一个元素开始,依次将较大元素放到nums1末尾,直到遍历到两个数组的首位置。若nums2还没遍历完,则再依次将nums2前面的元素放到nums1前面。

    代码

     1 class Solution {
     2 public:
     3     void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
     4         int i = m - 1, j = n - 1, idx = m + n - 1;
     5         while(i >= 0 && j >= 0){
     6             if(nums1[i] < nums2[j])
     7                 nums1[idx--] = nums2[j--];
     8             else nums1[idx--] = nums1[i--];
     9         }
    10         while(j >= 0)
    11             nums1[idx--] = nums2[j--];
    12     }
    13 };
  • 相关阅读:
    Linux:Day45(下)
    Linux:Day45(上)
    Linux:Day44(下)
    彻底理解JDK异步
    Ribbon是什么?
    RocketMQ学习笔记(一)eclipse版的quickstart
    线性表的遍历
    八皇后问题
    汉诺塔
    servlet的url-pattern规则
  • 原文地址:https://www.cnblogs.com/wmx24/p/9543272.html
Copyright © 2011-2022 走看看