本文共 1673 字,大约阅读时间需要 5 分钟。
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中index所指的位置,这样就避免了反复的数据后移问题。 最坏情况下的时间复杂度O(n+m)。。。C++代码:
class Solution {public: void merge(vector & nums1, int m, vector & nums2, int n) { int index=m+n-1; int index1=m-1; int index2=n-1; while(index1>=0 && index2>=0) { if(nums1[index1]<=nums2[index2]) { nums1[index--]=nums2[index2--]; } else { nums1[index--]=nums1[index1--]; } } while(index2>=0) { nums1[index--]=nums2[index2--]; } }};Python代码:
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. """ index=m+n-1 index1=m-1 index2=n-1 while index1>=0 and index2>=0: if nums1[index1]<=nums2[index2]: nums1[index]=nums2[index2] index-=1 index2-=1 else: nums1[index]=nums1[index1] index-=1 index1-=1 while index2>=0: nums1[index]=nums2[index2] index-=1 index2-=1
转载地址:http://kcyai.baihongyu.com/