对包含 2 个已排序子数组的数组进行排序最优化的排序算法是什么?
当我解决这个问题时出现了:https ://leetcode.com/problems/squares-of-a-sorted-array/
我的解决方案如下:
def sortedSquares(self, nums: List[int]) -> List[int]:
n = len(nums)
l, r = 0, n-1
res = [0] * n
for i in range(n-1, -1, -1):
if abs(nums[l]) > abs(nums[r]):
res[i] = nums[l] ** 2
l += 1
else:
res[i] = nums[r] ** 2
r -= 1
return res
然而,这个解决方案胜过我的:
def sortedSquares(self, nums: List[int]) -> List[int]:
return sorted([i * i for i in nums])
如果 timsort 对小块进行插入排序,那么这样的数组不会在一半的运行中导致 O(n^2) 吗?这比我所谓的 O(n) 解决方案好多少?
谢谢!