LeetCode题解----找一个数组中第一大的数和第二大的数



//找一个数组中第一大的数和第二大的数

/**
 * 思路:如果当前元素大于最大数 max,则让第二大数等于原来的最大数 max,
 *      再把当前元素的值赋给 max。
 *      如果当前的元素大于等于第二大数secondMax的值而小于最大数max的值,
 *      则要把当前元素的值赋给 secondMax。
 */
public class MaxAndSecondMax {

    //生成一个随机数组,长度与大小指定
    public static int[] getArray(int size, int max) {
        int[] array = new int[size];
        for (int i = 0; i < array.length; i++) {
            array[i] = (int) (Math.random() * max);
        }
        return array;
    }

    //循环遍历一个数组
    public static void BLArray() {
        int[] arrays = getArray(10, 100);

        System.out.print("生成的数组为:[ ");
        for (int x : arrays) {
            System.out.print(x + "\t");
        }
        System.out.print("]");

        getMax_SecondMax(arrays);
    }

    //获取数组的最大值和第二大的值
    public static void getMax_SecondMax(int[] array) {
        int max = 0;
        int second_max = 0;
        int max_num = 0;
        int second_max_num = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] > max) {
                second_max = max;
                max = array[i];
                max_num = i;
                second_max = i;
            } else {
                if (array[i] > second_max) {
                    second_max = array[i];
                    second_max_num = i;
                }
            }
        }
        System.out.println("\nMax:" + max + "  下标:" + max_num);
        System.out.println("Second_Max:" + second_max + "  下标:" + second_max_num);

    }

    public static void main(String[] args) {
        BLArray();
    }
    
}