2020年5月25日 星期一

[LeetCode] 88. Merge Sorted Array* 解題思路 (Easy)



這題陣列要結合另一個陣列並且進行排序。




LeetCode 題目連結

 

https://leetcode.com/problems/merge-sorted-array/

題目


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]

 

Accept 作法


這題需要注意題目說明,原本以為 m 跟 n 是陣列大小,其實不是。


Runtime: 1 ms
Memory: 39.8 MB

Java 程式碼

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
       int index = 0;
        for(int i = m;i<(m + n);i++){
           nums1[i] = nums2[index];
            index++;
       }
       // Arrays.sort(nums1); 
       // sort
        for(int i = 0; i < nums1.length;i++){
            for(int j = i +1;j<nums1.length;j++){
                if(nums1[i] > nums1[j]){
                  int tmp = nums1[i];
                  nums1[i] = nums1[j];
                  nums1[j] = tmp;  
                }
                
            }
        }
    }
}

更多 LeetCode 相關資源

 

複習程式面試書籍


除了 LeetCode 練習外,我也入手了這本,題庫來自真正的面試,並非摘自教科書。它們反映出頂尖公司真正會出的題目,你可以藉此做好充分準備
需要的話可以看看,寫得很仔細。


書名:提升程式設計師的面試力:189道面試題目與解答



相關 LeetCode文章一律會放在 程式解題 標籤分類,歡迎持續追蹤。


2 則留言:

  1. 這題的關鍵在於兩個陣列都已經排完序,而且要使用原地演算法
    如果從小排到大的話會把陣列1的元素覆蓋,因此要從大排到小,依序比較陣列1、2的值並塞到陣列1尾端

    回覆刪除