LeetCode088 Merge Sorted Array

来源:互联网 发布:网络银商 编辑:程序博客网 时间:2024/05/23 16:55

详细见:leetcode.com/problems/merge-sorted-array


Java Solution: github

package leetcode;/* * 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. */public class P088_MergeSortedArray {public static void main(String[] args) {}/* * 1 ms * 7.98% */static class Solution {    public void merge(int[] nums1, int m, int[] nums2, int n) {    if (nums1 == null || nums2 == null || nums2.length == 0 || n == 0)    return;        int eni1 = m - 1, eni2 = n - 1, eni3 = m + n - 1;        while (eni1 != -1 && eni2 != -1)        nums1[eni3 --] = nums1[eni1] < nums2[eni2] ? nums2[eni2 --] : nums1[eni1 --];        if (eni1 != -1 && eni3 != eni1) {        while (eni1 != -1)        nums1[eni3 --] = nums1[eni1 --];        }        if (eni2 != -1) {        while (eni2 != -1)        nums1[eni3 --] = nums2[eni2 --];        }    }}}


C Solution: github

/*    url: leetcode.com/problems/merge-sorted-array    AC 3ms 21.00%*/void merge(int* n1, int n1n, int* n2, int n2n) {    int i1 = n1n -1, i2 = n2n - 1, i = n1n+n2n-1;    while (i1 > -1 && i2 > -1) {        if (n1[i1] > n2[i2]) {            n1[i --] = n1[i1 --];        } else {            n1[i --] = n2[i2 --];        }    }    while (i1 > -1) n1[i --] = n1[i1 --];    while (i2 > -1) n1[i --] = n2[i2 --];}


Python Solution: github

#coding=utf-8'''    url: leetcode.com/problems/merge-sorted-array    @author:     zxwtry    @email:      zxwtry@qq.com    @date:       2017年4月22日    @details:    Solution: 52ms 46.81%'''class Solution(object):    def merge(self, n1, m, n2, n):        """        :type n1: List[int]        :type m: int        :type n2: List[int]        :type n: int        :rtype: void Do not return anything, modify n1 in-place instead.        """        i1, i2, i = m-1, n-1, m+n-1        while i1 > -1 and i2 > -1:            if n1[i1] > n2[i2]:                n1[i] = n1[i1]                i, i1 = i-1, i1-1            else:                n1[i] = n2[i2]                i, i2 = i-1, i2-1        while i1 > -1:            n1[i] = n1[i1]            i, i1 = i-1, i1-1        while i2 > -1:            n1[i] = n2[i2]            i, i2 = i-1, i2-1                    


0 0