您的位置:首页 > 其它

[LeetCode]414. Third Maximum Number第三大的数

2016-12-06 15:12 204 查看
知识点:最小整数,数组初始化vector,vector遍历Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).给一个非空的整形数组,返回这个数组中第三大的数。如果它不存在,则返回最大的数。时间复杂度必须为o(n)Example 1:
Input: [3, 2, 1]

Output: 1

Explanation: The third maximum is 1.
Example 2:
Input: [1, 2]

Output: 2

Explanation: The third maximum does not exist, so the maximum (2) is returned instead.
Example 3:
Input: [2, 2, 3, 1]

Output: 1

Explanation: Note that the third maximum here means the third maximum distinct number.
Both numbers with value 2 are both considered as second maximum.
Subscribe to see which companies asked this question
void InsertOneNum2List(long sortList[3], int num)
{
//sortList 0-max,1-second,2-third
if(num == sortList[0] || num == sortList[1] ||num == sortList[2])
return;
if(num > sortList[0])
{
sortList[2] = sortList[1];
sortList[1] = sortList[0];
sortList[0] = num;
}
else if(num > sortList[1])
{
sortList[2] = sortList[1];
sortList[1] = num;
}
else if(num > sortList[2])
{
sortList[2] = num;
}
}

class Solution {
public:

int thirdMax(vector<int>& nums) {
//因为会用INT_MIN作为测试数,所以这里需要用LONG_MIN
long sortList[3] = {LONG_MIN,LONG_MIN,LONG_MIN};
//遍历插入
vector<int>::iterator iter;
for(iter = nums.begin();iter != nums.end();iter++)
{
InsertOneNum2List(sortList,*iter);

}

if(sortList[2] == LONG_MIN || sortList[2] == sortList[1])
return sortList[0];
else
return sortList[2];
}
};
void main(){int a[] = {1,2,-2147483648};vector<int> nums(a,a+3);Solution *s = new Solution();int result = s->thirdMax(nums);cout<<result;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 数组