初始数组:2 23 34 27 89 14 26 30 60
k = 3
从索引 i = 1 开始,我们必须移动 k 个元素,以便它们出现在数组中的元素 26 之后(即在 givenIndex = 6 之后)。
最终数组: 2 89 14 26 23 34 27 30 60
我们不允许使用额外的空间。
我的做法:
count = 0;
while(count < k)
{
count++;
temp = arr[i];
shift all elements from (i+1) to givenIndex to their immediate left position;
arr[givenIndex] = temp;
}
第一次迭代:
temp = 23
将所有元素从 [i+1](即 index=2) 移动到 givenIndex(即 index=6) 移动后一个向左的
数组:2 34 27 89 14 26 26 30 60
arr[givenIndex] =
应用此操作后的临时数组:2 34 27 89 14 26 23 30 60
第二次迭代后的类似
数组:2 27 89 14 26 23 34 30 60
第三次迭代后的数组:2 89 14 26 23 34 27 30 60
最坏情况复杂度 O(n*k) 其中 n 是第一个。数组中的元素。
我们可以解决 O(n) 中的问题吗