在数组中找到第二大的数
样例
给出 [1, 3, 2, 4]
, 返回 3
.
给出 [1, 2]
, 返回 1
.
注意事项
你可以假定至少有两个数字
解题思路:
解题方法比较多,例如
1、先排序,再取第二大的元素,时间复杂度O(nlogn)
2、利用TreeSet存储自动排序,删除掉最后一个元素,再返回最后一个元素即可,时间复杂度O(logn)
3、遍历一遍数组,两个变量分别存储Max与SecondMax,时间复杂度O(n),代码如下:
public class Solution {
/**
* @param nums: An integer array
* @return: The second max number in the array.
*/
public int secondMax(int[] nums) {
// write your code here
int max = 0;
int secondMax = 0;
//初始化max与secondMax
if(nums[0] >= nums[1]){
max = nums[0];
secondMax = nums[1];
}else{
max = nums[1];
secondMax = nums[0];
}
for(int i=2; i<nums.length; i++){
if(nums[i] >= max){
secondMax = max;
max = nums[i];
}
}
return secondMax;
}
}