Find Minimum in Rotated Sorted Array

유승선 ·2021년 12월 29일
0

LeetCode

목록 보기
4/122

다시 풀어보는 새로운 유형의 이진탐색 문제이다. 이 전에 풀었던 문제와 비슷하듯이 특정 index에서 이미 정렬된 벡터가 회전을 했다. 난 이진탐색 문제를 풀때 좀 복잡하게 생각하는 편인데 복잡한 생각을 조금만 더 줄이면 괜찮을거같다.

이 전에 있었던 문제와 마찬가지로 start 지점과 end 지점을 기준으로 어느 index에서 벡터가 회전되어 있는지를 알아냈다. 문제는 가장 작은 값을 원하기 때문에 mid 지점을 먼저보고 start 지점과 end 지점을 비교한뒤에 만약에 mid 부분이 제일 커야하는 end 값보다 크다면 가장 작은 값은 우측으로 회전되어있기때문에 start = mid+1 을 하였다. 반대에 경우에는 제대로 정렬된 상태이기 때문에 end = mid-1 를한것.

그 외에 상황에서는 현재 위치하고 있는 index가 최소점인지 확실할수 없기때문에 end = mid로 고정시켜두고 start < end 라는 while 룹을 쓴것이다. 점점 감이 잡히지만 아직은 확실하지 않은 유형의 문제인 이진탐색이다.

배운점:
1. 이진탐색은 항상 start 와 end 지점을 변형시키는것이아닌 start 혹은 end 자체를 mid 포인트로 두고 다시 이진탐색을 진행하는 방법도 있다.
2. 복잡하게 생각하지 말자.

profile
성장하는 사람

0개의 댓글