[LeetCode] - M - Find Peak Element

2023. 9. 3. 20:48· 알고리즘/문제
목차
  1.  
  2. 🔥 - Java 코드

https://leetcode.com/problems/find-peak-element/description/?envType=study-plan-v2&envId=top-interview-150

 

Find Peak Element - LeetCode

Can you solve this real interview question? Find Peak Element - A peak element is an element that is strictly greater than its neighbors. Given a 0-indexed integer array nums, find a peak element, and return its index. If the array contains multiple peaks,

leetcode.com

 

 

Example 1:


  
Input: nums = [1,2,3,1]
Output: 2
Explanation: 3 is a peak element and your function should return the index number 2.

Example 2:


  
Input: nums = [1,2,1,3,5,6,4]
Output: 5
Explanation: Your function can return either index number 1 where the peak element is 2, or index number 5 where the peak element is 6.

 

nums에서 양 옆의 값이 자신의 숫자보다 낮은 값들을 가진 값의 인덱스를 반환하는 문제인데,

 

문제 유형이 Binary Search이면서, 문제에서 O(log n)으로 해결하라고 되어있었음. 

 

처음엔 정렬이 안되어있는데 어떻게 Binary Search를 이용하며, 정렬을 하게되면 최소 O(n) 이나 O(n log n)으로 복잡도가 O(log n)을 넘게 되어서 어떻게 푸는지 상상이 안갔는데,

 

O(log n)으로 풀려면 Binary Search 밖에 떠오르지 않아서, 계속 생각해보니 정렬을 할 필요가 없는 문제였다.

 

mid 값을 잡고 mid값 , mid+1 값을 비교해서 start가 end보다 커질 때 start값을 반환하면 정답이다.

 

📌 -  풀이

  1. start와 end를 잡고 nums[mid] < nums[mid +1] 이면 start를 mid +1 해주고 아니라면 end = mid 해주면서 start와 end를 좁혀서 start 값 반환

 

코드로 보면 되게 단순한데, 정렬을 할수 없는 상태에서 Binary Search를 한다는 것이 기본적인 개념과 달라서 조금 헤맸던 것 같다.

 

🔥 - Java 코드


  
class Solution {
public int findPeakElement(int[] nums) {
int start = 0, end = nums.length - 1;
while (start < end) {
int mid = (start + end) / 2;
if (nums[mid] < nums[mid + 1]) {
start = mid + 1;
} else {
end = mid;
}
}
return start;
}
}
  1.  
  2. 🔥 - Java 코드
'알고리즘/문제' 카테고리의 다른 글
  • [LeetCode] - M - Kth Smallest Element in a BST
  • [LeetCode] - M - Search in Rotated Sorted Array
  • [LeetCode] - E - Two Sum
  • [LeetCode] - M - Min Stack
Casteira
Casteira
할 뿐
Casteira
SpongeCake
Casteira
전체
오늘
어제
  • __Main__ (104)
    • 알고리즘 (65)
      • 개념 (6)
      • 문제 (58)
    • 컴퓨터 구조 (9)
      • 자료 구조 (2)
      • OS (7)
    • 웹 (1)
      • 자바 (1)
      • 스프링 (5)
      • SQL (0)
    • 기록 (4)
      • 포트폴리오 (2)
    • 정글 (18)
      • TIL (17)

블로그 메뉴

  • 🗒️ 깃허브
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • framework
  • 정글
  • 크래프톤 정글
  • springboot
  • 크래프톤
  • 백준 골드
  • 코딩테스트
  • spring
  • java
  • 백준
  • dp
  • annotation

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
Casteira
[LeetCode] - M - Find Peak Element
테마상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.