我得到了这个问题:“实现一个方法,返回给定数组中两个最大数的总和。”
我是这样解决它的:
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”数字替换数组中的该数字。接着,我第二次调用最大值方法。
有人能告诉我这个算法的复杂度吗?请