코테준비 - Search in Rotated Sorted Array

정상화·2023년 2월 26일

LeetCode

목록 보기
31/222

Search in Rotated Sorted Array

class Solution {
public:
    int search(vector<int> &nums, int target) {
        int sz = nums.size();
        int r = sz - 1;
        int l = 0;
        int mid = (r + l) / 2;

        while (l < r){
            mid = (l + r) / 2;
            if(nums.at(mid) > nums.at(r)) l = mid+1;
            else r = mid;
        }
        int pivot = sz - l;

        l = (0 + sz - pivot) % sz;
        r = (sz - 1 + sz - pivot) % sz;
        mid = ((l + pivot) % sz + (r + pivot) % sz) / 2;
        mid = (mid + (sz - pivot)) % sz;
        while (nums.at(l) < nums.at(r)) {
            if (nums.at(mid) > target) {
                r = mid;
            } else if (nums.at(mid) < target) {
                l = (mid + 1) % sz;
            } else {
                break;
            }
            mid = ((l + pivot) % sz + (r + pivot) % sz) / 2;
            mid = (mid + (sz - pivot)) % sz;
        }
        return nums.at(mid) == target ? mid : -1;
    }
};
profile
백엔드 희망

0개의 댓글