LeetCode 88. Merge Sorted Array

題目

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

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

翻譯

給兩個已經排序過的的整數陣列nums1與nums2,將nums2合併入nums1之中

注意:
nums1會有有足夠的空間可以塞入兩個陣列(nums1.length = m+n),m為nums1的元素數量,n為nums2的元素數量

範例: nums1 = [1,1,2,4,6,null,null,null], m = 5, nums2 = [2,3,7], n = 3
合併後 nums1 = [1,1,2,2,3,4,6,7]

思路

  1. 這題可以分成兩個步驟就會變得很簡單,先把nums2的值放到nums1裡面
    ex. nums1 = [1,2,6,null,null] , nums2 = [4,5] --> [1,2,6,4,5]
  2. 然後將nums1裡面的元素重新排序 [1,2,4,5,6]

解題

/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function(nums1, m, nums2, n) {

    var index = 0;
    //將nums2裡面的值放在nums1
    for(var i = m ; i < m+n ; i++){
            nums1[i] = nums2[index];
            index++;
    }

    //使用泡沫排序法重新排序
    for(var j = 0 ; j < nums1.length - 1 ; j++){
        for(var k = j + 1 ; k < nums1.length ; k++){
            if(nums1[j] > nums1[k]){
                var temp = nums1[j];
                nums1[j] = nums1[k];
                nums1[k] = temp;
            }
        }
    }
};

results matching ""

    No results matching ""