class Solution {
public:
/**
* @param nums: An integer array
* @return: The second max number in the array.
*/
int secondMax(vector<int> &nums) {
// write your code here
int max=nums[0];
int amax=nums[0];
int l=0;
int i=1;
int n=nums.size();
if(n==1){
return nums[0];
}
while(i<n){
if(max<nums[i]){
max=nums[i];
l=i;
}
i++;
}
i=0;
if(l==0){
amax=nums[1];
}
while(i<n){
if(i==l){
i++;
continue;
}
if(amax<nums[i]){
amax=nums[i];
}
i++;
}
return amax;
}
};
先遍历找出最大值,记录下最大值下标;
再次遍历,除了已经标记的最大值,找出第二大值。
方法二:遍历一次即可
class Solution {
public:
/**
* @param nums: An integer array
* @return: The second max number in the array.
*/
int secondMax(vector<int> &nums) {
// write your code here
int first,second;
int n=nums.size();
if(n==0){
return nums[0];
}
if(nums[0]>nums[1]){
first=nums[0];
second=nums[1];
}
else{
first=nums[1];
second=nums[0];
}
for(int i=2;i<n;i++){
if(first<=nums[i]){
second=first;
first=nums[i];
}
}
return second;
}
};