我遇到了这个问题“实现此方法以返回给定数组中两个最大数字的总和。”
我以这种方式解决了它:
public static int sumOfTwoLargestElements(int[] a) {
int firstLargest = largest(a, 0, a.length-1);
int firstLarge = a[firstLargest];
a[firstLargest] = -1;
int secondLargest = largest(a, 0, a.length-1);
return firstLarge + a[secondLargest];
}
private static int largest(int s[], int start , int end){
if (end - start == 0){
return end;
}
int a = largest(s, start, start + (end-start)/2) ;
int b = largest(s, start + (end-start)/2+1 , end);
if(s[a] > s[b]) {
return a;
}else {
return b;
}
}
说明:我实现了一个方法“largeset”。此方法负责获取给定数组中的最大数。
我在同一个数组中调用该方法两次。第一次调用将获得第一个最大的数字。我将它放在变量中,并用“-1”数字替换它到数组中。然后,我第二次调用最大的方法。
有人可以告诉我这个算法的复杂性是什么?请