假设您有一个方法subArrayLeftShift(a,i),当 n 是数组长度时,该方法将子数组 a[i,...,n-1] 左移。这意味着元素 a[i+1],...,a[n-1] 向左移动了一个位置,而原来的 a[i] 将成为最后一个。
更正式地,这里是函数实现:
public static void subArrayLeftShift(int[] a, int i){
if (a.length == 0) return;
int last = a.length - 1;
int insertToLast = a[i];
for (; i < last; i++){
a[i] = a[i + 1];
}
a[last] = insertToLast;
}
现在的问题是:实现一个接收未排序数组的函数,并返回对数组排序的最少调用次数subArrayLeftShift。
在采访中,我找不到办法做到这一点。我成功地为我为直觉而编写的每个示例找到了最少的调用次数,但找不到概括它的方法。
你知道如何解决吗?
猛跑小猪
ABOUTYOU
相关分类