leetcode数组汇总_leetcode 刷题记录(高频算法面试题汇总)--合并两个有序数组...

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n。

你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

示例:

输入:

nums1 = [1,2,3,0,0,0], m = 3

nums2 = [2,5,6], n = 3

输出: [1,2,2,3,5,6]

[code]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: None Do not return anything, modify nums1 in-place instead.

"""

n1 = m-1

n2 = n-1

res = m+n-1

while res>=0:

if n1 < 0:

nums1[res] = nums2[n2]

n2 -= 1

res -= 1

elif n2< 0:

nums1[res] = nums1[n1]

n1 -= 1

res -= 1

elif nums1[n1] < nums2[n2]:

nums1[res] = nums2[n2]

n2 -= 1

res -= 1

else:

nums1[res] = nums1[n1]

n1 -= 1

res -= 1

[code]class Solution {

public:

void merge(vector& nums1, int m, vector& nums2, int n) {

int n1 = m-1;

int n2 = n-1;

int res = m+n-1;

while(res>=0){

if(n1<0){

nums1[res]=nums2[n2];

n2--;

res--;

}

else if(n2<0){

nums1[res]=nums1[n1];

n1--;

res--;

}

else if (nums1[n1]

nums1[res]=nums2[n2];

n2--;

res--;

}

else{

nums1[res]=nums1[n1];

n1--;

res--;

}

}

}

};

问题&思路

注意按逆序,从最大的加进nums1的结尾就可以了

你可能感兴趣的:(leetcode数组汇总)