我见过很多关于Big-O的问题,但我无法弄清楚这个问题。
我正在练习一些面试问题,如果一个毕达哥拉斯三胞胎存在于一个整数数组中,我必须找到一个。 我发现有一种简单的O(n ^ 3)方法来解决它,但我想找到一种更快的方法。
我的问题是,代码是O(n ^ 2)还是O(n ^ 3)? 我很困惑,因为即使我只有2个循环,我需要在最坏的情况下经历n次n ^ 2,这将是O(n ^ 3)。
public boolean findTriple(int[] array) {
return findT(0, array);
}
public boolean findT(int start, array) {
if(start == array.length-1) {
return false;
}
int first = array[start];
for(int i = 0; i < array.length; i++) {
for(int j = i+1; j < array.length; j++) {
if(first*first == array[i]*array[i] + array[j]*array[j] ||
array[i]*array[i] == array[j]*array[j] + first*first ||
array[j]*array[j] == first*first + array[i]*array[i]) {
return true;
}
}
}
return findT(start+1, array);
}
答案 0 :(得分:2)
每次调用该函数时,都会执行$area = array(
array(
state => "TX",
city => "Austin",
newName => "SoCo (S. Congress Ave.)",
oldName => "South Congress"
),
array(
state => "NY",
city => "Buffalo",
newName => "Elmwood Village",
oldName => "Elmwood "
),
);
$state = "TX";
$city = "Austin";
$str1 = "78704 (South Austin), SoCo (S. Congress Ave.), Bouldin Creek"
$str2 = "South Congress";
$arr1 = explode(", ", $str1);
$arr2 = explode(", ", $str2);
$arr3 = array_diff(array_unique(array_merge($arr1, $arr2)), array('NA'));
$str3 = trim(implode(", ", $arr3), ", ");
次操作。你打电话给你的功能n次。
总复杂度为:O(n^2)