zoukankan      html  css  js  c++  java
  • 一、数组---合并两个有序数组

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

    思路

    直接找最大的,从后往前放元素,遍历一次就完成了

     1 class Solution {
     2 public:
     3     void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
     4         //直接找最大的
     5         for(int i=m+n-1,i_1=m-1,i_2=n-1;i>=0;i--){
     6             //nums1空数组,i=n-1, i_1=0-1=-1, i_2=n-1
     7             if(i_1<0){
     8                 nums1[i] = nums2[i_2];
     9                 i_2--;//同nums1[i]=nums2[i_2--];
    10                 continue;
    11             }
    12             //nums2空数组, n=0, i=m-1, i_1=m-1, i_2=0-1=-1
    13             if(i_2<0){
    14                 nums1[i] = nums1[i_1];
    15                 i_1--;
    16                 continue;
    17             }
    18             if(nums1[i_1] >= nums2[i_2]){
    19                 nums1[i]=nums1[i_1];
    20                 i_1--;
    21             }
    22             else{
    23                 nums1[i] = nums2[i_2];
    24                 i_2--;
    25             }
    26             
    27         }
    28     }
    29 };
  • 相关阅读:
    c# 线程同步各类锁
    C#_从DataTable中检索信息
    永无BUG
    标志枚举
    将多行按分隔符"|"合成一行
    回车换行浅析
    url传输编码
    xshell 禁用铃声 提示音
    php 编译安装 mysql.so
    301 302 304
  • 原文地址:https://www.cnblogs.com/pacino12134/p/10990933.html
Copyright © 2011-2022 走看看