问题描述:如何在O(n)时间内找到一个整数数组中的第二大元素。
思路:遍历时同时保存第一和第二就成了。
JAVA实现如下:
public class FindSecMax {
/**
@petopig
*/
public static void main(String[] args) {
int [] a = {3,4,5,6,7,8,8,9,9,2,-1};
System.out.println(FindSecMax.getSecond(a));
}
public static int getSecond(int []a){
int max = a[0];
int secMax = a[1];
if(a[0]<a[1]){
max = a[1];
secMax = a[0];
}
for(int i=2;i<a.length-1;++i){
if(a[i] > max){
secMax = max;
max = a[i];
}
else if(a[i] <= max && a[i] > secMax){
secMax = a[i];
}
}
return secMax;
}
}