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

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

    说明:

    初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
    你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

    刚开始的思路是直接从头开始比较插入,但是有点麻烦。 

    后来借鉴别人的思路: 从后向前写。

    void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
        int tail = m + n - 1;
        --m;
        --n;
        while (m >= 0 && n >= 0) {
            if (nums1[m] > nums2[n]) nums1[tail--] = nums1[m--];
            else                     nums1[tail--] = nums2[n--];
        }
        while (n >= 0) {
            nums1[tail--] = nums2[n--];
        }
    }

    自己简单用C++改了一下:

    class Solution {
    public:
        void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
            
            cout << nums1.size() << "," << nums2.size() << ":";
            if(m == 0) {
                nums1 = nums2;
                return;
            }
            int i = m-1;
            int j = n-1;
            int tail = m+n-1;
            while(i>=0&&j>=0) {
                if(nums1[i] >= nums2[j] ){
                   nums1[tail] = nums1[i];
                   i--;
                   tail--;
                    
                } else {
                    nums1[tail] = nums2[j];
                   j--;
                    tail--;
                }
            }
            while(j >=0) {
                cout << "j:" << j << endl;
                nums1[j] = nums2[j];
                j--;
                
            }
            
        }
    };

    马上找工作喽。 

    The Safest Way to Get what you Want is to Try and Deserve What you Want.
  • 相关阅读:
    474. Ones and Zeroes
    [LeetCode]464. Can I Win
    413. Arithmetic Slices
    numpy学习(布尔型索引)
    numpy学习(数组和标量之间的运算切片)
    numpy学习(数组的定义及基础属性)
    关于静态显示游标的遍历
    关于oracle的数组
    shutil模块
    开源库(不定义更新)
  • 原文地址:https://www.cnblogs.com/Shinered/p/11283952.html
Copyright © 2011-2022 走看看