class Solution {
public int search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) return mid;
if (nums[left] <= nums[mid]) {
if (target >= nums[left] && target < nums[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
} else {
if (target > nums[mid] && target <= nums[right]) {
left = mid + 1;
} else {
right = mid - 1;
}
}
}
return -1;
}
public static void main
(String[] args
) { Solution solution = new Solution();
int[] nums = {4, 5, 6, 7, 0, 1, 2};
int target = 0;
int result = solution.search(nums, target);
System.
out.
println("Target found at index: " + result
); }
}
Y2xhc3MgU29sdXRpb24gewogICAgcHVibGljIGludCBzZWFyY2goaW50W10gbnVtcywgaW50IHRhcmdldCkgewogICAgICAgIGludCBsZWZ0ID0gMCwgcmlnaHQgPSBudW1zLmxlbmd0aCAtIDE7CgogICAgICAgIHdoaWxlIChsZWZ0IDw9IHJpZ2h0KSB7CiAgICAgICAgICAgIGludCBtaWQgPSAobGVmdCArIHJpZ2h0KSAvIDI7CgogICAgICAgICAgICBpZiAobnVtc1ttaWRdID09IHRhcmdldCkgcmV0dXJuIG1pZDsKCiAgICAgICAgICAgIGlmIChudW1zW2xlZnRdIDw9IG51bXNbbWlkXSkgewogICAgICAgICAgICAgICAgaWYgKHRhcmdldCA+PSBudW1zW2xlZnRdICYmIHRhcmdldCA8IG51bXNbbWlkXSkgewogICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gbWlkIC0gMTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IG1pZCArIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID4gbnVtc1ttaWRdICYmIHRhcmdldCA8PSBudW1zW3JpZ2h0XSkgewogICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByaWdodCA9IG1pZCAtIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU29sdXRpb24gc29sdXRpb24gPSBuZXcgU29sdXRpb24oKTsKICAgICAgICBpbnRbXSBudW1zID0gezQsIDUsIDYsIDcsIDAsIDEsIDJ9OwogICAgICAgIGludCB0YXJnZXQgPSAwOwogICAgICAgIGludCByZXN1bHQgPSBzb2x1dGlvbi5zZWFyY2gobnVtcywgdGFyZ2V0KTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRhcmdldCBmb3VuZCBhdCBpbmRleDogIiArIHJlc3VsdCk7CiAgICB9Cn0K