递归的大O.

时间:2017-02-15 20:18:13

标签: c recursion time-complexity big-o

我见过很多关于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);
}

1 个答案:

答案 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)

相关问题