このメソッドは、 の配列内の少なくとも 2 つの値が である場合にhasTwoTrueValues
戻ります。提案された 3 つの実装すべてについて、Big-O の実行時間を提供します。true
boolean
true
//バージョン 1
public boolean hasTwoTrueValues(boolean[] arr) {
int count = 0;
for(int i = 0; i < arr.length; i++)
if(arr[i])
count++;
return count >= 2;
}
//バージョン 2
public boolean hasTwoTrueValues(boolean[] arr) {
for(int i = 0; i < arr.length; i++)
for(int j = i + 1; j < arr.length; j++ )
if(arr[i] && arr[j])
return true;
}
//バージョン 3
public boolean hasTwoTrueValues(boolean[] arr) {
for(int i = 0; i < arr.length; i++)
if(arr[i])
for(int j = i + 1; j < arr.length; j++)
if(arr[j])
return true;
return false;
}
これらは私の答えです:
- バージョン1は
O(n)
- バージョン2は
O(n^2)
- バージョン3は
O(n^2)
私はこの Big-O 記法に本当に慣れていないので、答えが正しいか間違っているかについてのガイダンスが必要です。もし私が間違っていたら、説明して、私が学ぶのを手伝ってくれませんか?