如果数组中至少有两个值是,则该方法hasTwoTrueValues
返回。为建议的所有三个实现提供 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 表示法真的很陌生,所以如果我的答案是正确/不正确的,我需要指导。如果我错了,你能解释一下并帮助我学习吗?