LeetCode088 Merge Sorted Array

详细见: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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值