33. Search in Rotated Sorted Array

JJ·2021년 1월 20일
0

Algorithms

목록 보기
73/114
class Solution {
    public int search(int[] nums, int target) {
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == target) {
                return i;
            }
        }
        
        return -1; 
    }
}

Runtime: 0 ms, faster than 100.00% of Java online submissions for Search in Rotated Sorted Array.
Memory Usage: 38 MB, less than 97.97% of Java online submissions for Search in Rotated Sorted Array.

언제부터였을까요.. 이렇게 꿀 솔루션을 쓰면 양심이 찔리기 시작한게...ㅎ

class Solution {
    public int search(int[] nums, int target) {
        int s = 0;
        int e = nums.length - 1;
        
        while (s <= e) {
            int m = s + (e - s) / 2;
            
            if (nums[m] == target) return m;
            else if (nums[s] <= nums[m]) {
                if (nums[s] <= target && target < nums[m]) {
                    e = m - 1;
                } else {
                    s = m + 1;
                }
            } else {
                if (nums[e] >= target && target > nums[m]) {
                    s = m + 1;
                } else {
                    e = m - 1;
                }
            }
        }
        
        return -1; 
    }
}

Runtime: 0 ms, faster than 100.00% of Java online submissions for Search in Rotated Sorted Array.
Memory Usage: 38.7 MB, less than 21.05% of Java online submissions for Search in Rotated Sorted Array.

이제 좀 알겠는 binary search 이용~
peak가 앞에 있는지 뒤에 있는지 찾은 후 값에 따라 조정.

루션이를 보니 저랑 똑같이 풀었어서 뿌듯했네요^^

0개의 댓글