3
n個の整数の配列と数字dを指定すると、配列上で左回転を実行します。例array [1,2,3,4,5]とシフトは常に< =配列のサイズであり、1だけシフトするように要求されると出力は - > [2,3,4,5,1]になります。 arrayLeftRotationは([]、INTをINT []単一の1D配列のみを使用して、n個の位置で配列の循環左シフトを行う効率的な方法。
パブリックstatic int型:私は私のための時間複雑度はO(N^2)
コードであるとしてこれをさらに最適化することができ、正常に動作しているコードの下に書かれていますnは、int型のk){O(n)
時に、その場でこれを行うための巧妙なトリックがあります
if (n == 1 || n == k)
return a;
else {
int track = 0;
while (track < k) {
int start = a[0];
for (int i = 0; i < n - 1; i++) {
a[i] = a[i + 1];
}
a[n - 1] = start;
track++;
}
return a;
}
}
確かに 'O(nk)'ですか? –
はいO(nk)は、whileとinner forループの外側を持っています。 – chakradhar
'java.util.Collections'クラスは、この種のものの読み込みはかなり良いです。 –