求一个数组中第二大的数,如果数组中的数字全都相等的情况下,怎么在一次遍历的情况下给出结果呢?
如果全部相等则输出全部相等,不是全部相等的情况下求出第二大的数?
有什么好的思路吗?
请大神们帮帮忙!多谢
------解决方案--------------------
public static void main(String[] args) {
int[] arr = { 5, 41, 65, 55, 32, 45, 13, 18, 55, 4, 21, 21, 54, 2, 4, 87, 74, 54 };
int first = Integer.MIN_VALUE, second = first;
for(int i = 0, len = arr.length; i < len; i++) {
if(arr[i] > second) {
if(arr[i] > first) {
second = first;
first = arr[i];
} else {
second = arr[i];
}
}
}
System.out.println(second);
}
------解决方案--------------------
设置3个变量: 最大,第二大,最小
遍历一次,然后比较最大和最小相等时输出全部,不相等时输出第二大数。
------解决方案--------------------
用Arrays类的sort方法,自己写个比较器,实现从大到小排序,排玩第二个就是第二大的