1. 程式人生 > >LeetCode刷題Easy篇合併兩個有序陣列

LeetCode刷題Easy篇合併兩個有序陣列

題目

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:

  • The number of elements initialized in nums1 and nums2 are m and n respectively.
  • You may assume that nums1 has enough space (size that is greater or equal to m
     + n) to hold additional elements from nums2.

Example:

Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

Output: [1,2,2,3,5,6]

我的方法

寫程式碼,好久才寫出來,發現忽略了人家已經給了陣列實際長度,因為0不算,這樣問題就簡單了,但是我還堅持把自己的演算法寫完了,完全不用給定的長度!!!牛逼不!

package com.card;

import java.util.Arrays;

class GFG {


    public static String mergeSortArray(int[] a,int[] b) {
        int p=0;
        int q=0;
        while(p<a.length&&q<b.length){
            if(a[p]<b[q]){
                p++;
                continue;
            }
            for(int i=a.length-1;i>=p&&i>0;i--){
                a[i]=a[i-1];
            }
            a[p]=b[q];
            q++;
            p=0;
        }
        if(p==a.length){
            for(int i=a.length-(b.length-q);i<a.length;i++){
                a[i]=b[q];
                q++;
            }
        }

        return Arrays.toString(a);
    }

    /* Driver program to test maxSubArraySum */
    public static void main(String[] args) {
        int[]  a={2,0};
        int[] b={1};
        String res = mergeSortArray(a,b);
        System.out.println("solution is "
                + res);
    }
}