码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode--Merge Sorted Array

时间:2019-08-26 09:37:22      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:href   int   com   header   pytho   sort   return   object   素数   

原文引用https://www.dazhuanlan.com/2019/08/26/5d63036ee8731/


原题:

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有足够的空间(大小大于或等于m + n)来保存nums2中的其他元素。 nums1和nums2中初始化的元素数量分别为m和n。

解题思路

从尾部开始做归并。
代码实现(java):

1
2
3
4
5
6
7
8
9
10
11
class {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1, j = n - 1, index = m + n - 1;
while (index >= 0){
if(i < 0 || j < 0)
nums1[index--] = i < 0 ? nums2[j--] : nums1[i--];
else
nums1[index--] = nums1[i] > nums2[j] ? nums1[i--] : nums2[j--];
}
}
}

python实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution(object):
def merge(self, nums1, m, nums2, n):
"""
:type nums1: List[int]
:type m: int
:type nums2: List[int]
:type n: int
:rtype: void Do not return anything, modify nums1 in-place instead.
"""
i, j, index = m-1, n-1, m+n-1
while i >= 0 and j >= 0:
if nums1[i] > nums2[j]:
nums1[index] = nums1[i]
i, index = i-1, index-1
else:
nums1[index] = nums2[j]
j, index = j-1, index-1
nums1[:j+1] = nums2[:j+1]

LeetCode--Merge Sorted Array

标签:href   int   com   header   pytho   sort   return   object   素数   

原文地址:https://www.cnblogs.com/petewell/p/11410485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!