如何在O(n)时间内找到一个整数数组中的第二大元素。

来源:互联网 发布:南方公园知乎 编辑:程序博客网 时间:2024/05/29 15:48

问题描述如何在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;}}


 

原创粉丝点击