我有一个给定的数组,我需要返回一个数组,在第一个数组的每个单元格中有一个较小的数字。例如
[3,4,2,10]
输出应该是
[2,3,1,9]
复杂性应为O(n*log(n))
我将不胜感激任何帮助
答案 0 :(得分:1)
你可以做得更好O(n log n)
,这里是伪代码:
subOne( array[])
n=arrayLength
for i=1 to n
array[i]=array[i]-1
return array
运行时间:O(n)
如果您坚持O(n log n)
,您还可以使用merge sort
mergesort(Array m)
{
if length(m) ≤ 1
return m
else
{
middle = length(m) / 2
for each x in m up to middle
add x to left
for each x in m after middle
add x to right
left = mergesort(left)
right = mergesort(right)
result = merge(left, right)
return result
}
}
总计:O(n)
+ O(n log n)
= O(n log n)