leetcode

原题:

414. Third Maximum Number

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).

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.
代码如下:
int thirdMax(int* nums, int numsSize) {
    long int first=INT_MIN;
    long int second=INT_MIN;
    long int third=INT_MIN;
    for(int n=0;n<numsSize;n++)
    {
        if(*(nums+n)>first)
        {
            third=second;
            second=first;
            first=*(nums+n);
        }
        else
        {
            if(*(nums+n)>second&&*(nums+n)!=first)
            {
                third=second;
                second=*(nums+n);
            }
            else
            {
                if(*(nums+n)>third&&*(nums+n)!=second&&*(nums+n)!=first)
                {
                    third=*(nums+n);
                }
            }
        }
    }
    if(third==INT_MIN)
        return first;
    return third;
}

这个leetcode对c真的是特别的不友好。算法很简单,这个平台对数据的处理太不友好了。这个并不能提交,因为在极值上总是出问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值