넘치게 채우기

[LeetCode] 852. Peak Index in a Mountain Array 본문

PS/LeetCode

[LeetCode] 852. Peak Index in a Mountain Array

riveroverflow 2023. 7. 25. 12:52
728x90
반응형

https://leetcode.com/problems/peak-index-in-a-mountain-array/description/

 

Peak Index in a Mountain Array - LeetCode

Can you solve this real interview question? Peak Index in a Mountain Array - An array arr a mountain if the following properties hold: * arr.length >= 3 * There exists some i with 0 < i < arr.length - 1 such that: * arr[0] < arr[1] < ... < arr[i - 1] < arr

leetcode.com

문제 유형 : 배열

문제 난이도 : Medium

 

문제

An array arr a mountain if the following properties hold:

  • arr.length >= 3
  • There exists some i with 0 < i < arr.length - 1 such that:
    • arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
    • arr[i] > arr[i + 1] > ... > arr[arr.length - 1]

Given a mountain array arr, return the index i such that arr[0] < arr[1] < ... < arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1].

You must solve it in O(log(arr.length)) time complexity.

 

원소의 값이 산의 형태를 가진 배열이 주어집니다. 이 배열의 산봉우리 인덱스를 구하시오.

시간복잡도O(N)이내로 문제를 해결하시오.


풀이

배열을 순회하면서 가장 높은 값을 가진 값과 인덱스를 갱신하면서 순회한다.

한 번이라도 다음 값이 낮아지면(내리막을 감지하면), 순회를 멈춘다

 

코드(C++)

class Solution {
public:
    int peakIndexInMountainArray(vector<int>& arr) {
        ios_base::sync_with_stdio(false);
        cin.tie(NULL);

        const int n = arr.size();
        int peakIndex = -1;
        int peakHeight = -1;

        for(int i = 0; i < n; i++){
            if(arr[i] > peakHeight){
                peakHeight = arr[i];
                peakIndex = i;
            }
            else{
                break;
            }
        }
        return peakIndex;
    }
};
 
728x90
반응형

'PS > LeetCode' 카테고리의 다른 글

[LeetCode] 135. Candy  (0) 2023.07.30
[LeetCode] 238. Product of Array Except Self  (0) 2023.07.26
[LeetCode] 380. Insert Delete GetRandom O(1)  (0) 2023.07.24
[LeetCode] 50. Pow(x, n)  (0) 2023.07.24
[LeetCode] 274. H-Index  (0) 2023.07.23