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.
把nums2加到nums1中,还要原地算法。
先把nums2直接加到nums1后面,然后排序。
题意理解错了,要考虑m和n,不是数组的所有元素都用上了。
用append得到的是None
a+b倒是可以直接接在后面,但是,需要的是原地算法,在nums1中进行改变
用sorted也不管用。
如果直接往nums1中的每个位置放置值,肯定可行,但是,可能放置数字之后,就覆盖了某些还没进行比较的数字,这个问题如何解决?
不能直接加在nums1后面,因为nums1的长度大于等于m+n,后面是一堆0.
先把nums2放到nums1[m:]中?
然后排序。
sort的复杂度分析
Timsort算法
什么是Timsort,请看 wiki的解释:http://en.wikipedia.org/wiki/Timsort
另外,国内有一个文档,适当翻译:Timsort原理介绍 - Data Analytics - 博客频道 - ****.NET,这里截取一个不同排序算法比较的图示,就明白sorted的威力了。
作者:挖矿老司机
链接:https://www.zhihu.com/question/36280272/answer/133732536
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
discuss:
从后向前,给每个位子找应该放的数字。
为啥去掉最后一个while还是AC?因为如果是nums1还剩下,那么剩下的这些还是被放到原来的位置
同时,m=0的情况也包含在里面了。
时间复杂度:O(m+n)
空间复杂度O(1)
也可以写成一个循环,其实质是一致的