找到最大乘积的算法 - 分析
Algorithm that finds the maximum product - Analysis
我有这段代码,它使用数组中的 3 个数字计算你能找到的最大乘积:
public static int findMaxProduct(int[] arr) {
int i=0, j=1, f=2;
int largest = arr[i]*arr[j]*arr[f];
for(;i<arr.length;) {
if(largest<arr[i]*arr[j]*arr[f])
largest = arr[i]*arr[j]*arr[f];
if(i==arr.length-3)
return largest;
if(f==arr.length-1 && j == arr.length - 2) {
i++;
j=i+1;
}
if( f==arr.length-1 && j != arr.length-2)
f = j+1;
if(f<arr.length-1)
f++;
if(f==arr.length -1 && j < arr.length -2)
j++;
}
return 0;
}
现在,我不确定它有多复杂,因为如果只满足一个条件,我们就会递增 i
,而我们不知道它将在哪里执行 i++
。如果你帮我找到复杂性,我将不胜感激! (时间)
你测试了所有的三胞胎。大约有 n^3
个。因此复杂度为 O(n^3)
.
我有这段代码,它使用数组中的 3 个数字计算你能找到的最大乘积:
public static int findMaxProduct(int[] arr) {
int i=0, j=1, f=2;
int largest = arr[i]*arr[j]*arr[f];
for(;i<arr.length;) {
if(largest<arr[i]*arr[j]*arr[f])
largest = arr[i]*arr[j]*arr[f];
if(i==arr.length-3)
return largest;
if(f==arr.length-1 && j == arr.length - 2) {
i++;
j=i+1;
}
if( f==arr.length-1 && j != arr.length-2)
f = j+1;
if(f<arr.length-1)
f++;
if(f==arr.length -1 && j < arr.length -2)
j++;
}
return 0;
}
现在,我不确定它有多复杂,因为如果只满足一个条件,我们就会递增 i
,而我们不知道它将在哪里执行 i++
。如果你帮我找到复杂性,我将不胜感激! (时间)
你测试了所有的三胞胎。大约有 n^3
个。因此复杂度为 O(n^3)
.