zoukankan      html  css  js  c++  java
  • 【LeetCode】88. 合并两个有序数组

    【题目描述】

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

    说明:

    初始化 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]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/merge-sorted-array

    【解题思路】

    逆向合并到数组nums1中,可以不用另外开辟空间;

    【提交代码】

     1 void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
     2     int pos;
     3     int *A = nums1;
     4     int *B = nums2;
     5 
     6     pos = m + n -1;
     7 
     8     while( m > 0 && n > 0 )
     9     {
    10         if( B[n-1] > A[m-1] )
    11         {
    12             A[pos] = B[n-1];
    13             n--;
    14         }
    15         else
    16         {
    17             A[pos] = A[m-1];
    18             m--;
    19         }
    20         pos--;
    21     }
    22 
    23     while( m > 0 )
    24     {
    25         A[pos] = A[m-1];
    26         pos--;
    27         m--;
    28     }
    29 
    30     while( n > 0 )
    31     {
    32         A[pos] = B[n-1];
    33         pos--;
    34         n--;
    35     }
    36 }
  • 相关阅读:
    POJ 1887 Testing the CATCHER
    HDU 3374 String Problem
    HDU 2609 How many
    POJ 1509 Glass Beads
    POJ 1458 Common Subsequence
    POJ 1159 Palindrome
    POJ 1056 IMMEDIATE DECODABILITY
    POJ 3080 Blue Jeans
    POJ 1200 Crazy Search
    软件体系结构的艺术阅读笔记1
  • 原文地址:https://www.cnblogs.com/utank/p/13282923.html
Copyright © 2011-2022 走看看