Web サイト (talentbuddy.co) でこの問題を見つけましたが、Big-O 表記法について私が知っているすべてが混同されています。
問題文は次のとおりです。
整数の配列が与えられた場合、タスクは標準出力 (stdout) に初期配列を出力することですが、特別な方法でソートされます。
すべての負の数が最初に来て、初期配列によるそれらの相対位置は正の整数と同じように変化しませんが、最後に来ます。
予想される複雑さ: O(N) 時間、余分なメモリ O(1)
入力例: -5 2 1 -2 3
出力例: -5 -2 2 1 3
O(n) 時間は、アルゴリズムの実行時間が入力のサイズ (この場合は配列のサイズ) に比例することを意味することを理解していますが、余分なメモリ O(1) を持つことはどういう意味ですか?
単一の for ループを使用してこの問題を解決することは可能ですか? これが私のソリューションの外観です。ランタイムが O(n) かどうかはわかりません。
import java.util.Arrays;
class MyClass {
public static void relative_sort(Integer[] v) {
int[] positives = new int[v.length];
int counter = 0;
for(int i=0; i < v.length; i++){
if(v[i] < 0){
System.out.print(v[i] + " ");
}else{
positives[counter] = v[i];
counter++;
}
}
for(int i=0; i < counter; i++){
System.out.print(positives[i] + " ");
}
}
}
助けてくれてどうもありがとう!ほんとうにありがとう!