标题 | java求数组第二大元素 |
内容 | java求数组第二大元素,假设该数组所有数都为非负整数,且所有数字都各自不同。 package array; public class SecondMaxElem { public static int getSecondMaxElem(int[] array) { if(array == null || array.length <= 1) { return -1; } int max = array[0] > array[1] ? array[0] : array[1]; int secMax = array[0] + array[1] - max; int len = array.length; for(int i = 2; i < len; i++) { int cur = array[i]; if(cur > secMax) { secMax = cur; if(secMax > max) { // swap int temp = secMax; secMax = max; max = temp; } } } return secMax; } public static int getSecondMaxElem2(int[] array) { if(array == null || array.length <= 1) { return -1; } int max = array[0] > array[1] ? array[0] : array[1]; int secMax = array[0] + array[1] - max; int len = array.length; for(int i = 2; i < len; i++) { int cur = array[i]; if(cur > max) { secMax = max; max = cur; } else if(cur > secMax && cur < max) { secMax = cur; } else { // 其他情况最大值和第二大值不变,可以画一个坐标轴 } } return secMax; } public static void main(String[] args) { int[] array = new int[] { }; /*System.out.println("算法1: " + getSecondMaxElem(array)); System.out.println("算法2: " + getSecondMaxElem2(array)); array = new int[] { 2 }; System.out.println("算法1: " + getSecondMaxElem(array)); System.out.println("算法2: " + getSecondMaxElem2(array));*/ array = new int[] { 2, 3, 1, 6, 7, 5, 9 }; System.out.println("算法1: " + getSecondMaxElem(array)); System.out.println("算法2: " + getSecondMaxElem2(array)); /*array = new int[] { 1, 2, 3, 3, 4, 5, 5 }; System.out.println("算法1: " + getSecondMaxElem(array)); System.out.println("算法2: " + getSecondMaxElem2(array));*/ } } |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。