Post

leetcode(리트코드)414-Third Maximum Number

leetcode Array intro - Maximum Number 문제입니다.

1. 문제

https://leetcode.com/problems/third-maximum-number/


2. Input , Output


3. 분류 및 난이도

Eazy 난이도 문제입니다.


4. 문제 해석

  • 3번째로 큰값을 찾는 문제입니다. 3번째로 큰 값이 없으면 가장 큰 값을 찾아 return 합니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
    int thirdMax(vector<int>& nums) {
     sort(nums.begin(),nums.end(),greater<int>());
     int maxnum = nums[0];
     int count =0;
     for(size_t i=0;i<nums.size();++i)
     {
         if(nums[i]<maxnum)
         {
             ++count;
             maxnum = nums[i];
             if(count>1)
                 return maxnum;
         }
     }
     return nums[0];
    }
};

6. 결과 및 후기, 개선점

시간

0ms 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public:
    int thirdMax(vector<int>& a) {
        long one ,two,three;
        // 세 변수 모드 Long형 최소값을 넣습니다.
        one = two = three = LONG_MIN;
        // vector a를 돌면서
        for(auto i : a){
            
            if(i == one || i == two || i==three) continue;
            // 배열의 인덱스가 처음으로 one보다 큰 값이 나오면 one, two, three 변수들의 값을 옮겨줍니다. 
            if(i>one){
                three = two;
                two = one;
                one = i;
            }
            //마찬가지로 인덱스로 들어온 값이 two보다 큰 값이 들어오면 값을 옮겨줍니다. else if문이라 두 번째로 걸리게 됩니다.
            else if(i>two){
                three = two;
                two = i;
            }
            //마찬가지
            else if(i>three){
                three = i;
            }
        }
        return three == LONG_MIN ? one:three;
    }
};

이게 왜 0ms인지는 잘 모르겠습니다.

This post is licensed under CC BY 4.0 by the author.