本文共 1577 字,大约阅读时间需要 5 分钟。
示例 1:
输入:nums = [4,5,6,7,0,1,2], target = 0输出:4
示例 2:
输入:nums = [4,5,6,7,0,1,2], target = 3输出:-1
示例 3:
输入:nums = [1], target = 0输出:-1
提示:
1 <= nums.length <= 5000-10^4 <= nums[i] <= 10^4nums 中的每个值都 独一无二nums 肯定会在某个点上旋转-10^4 <= target <= 10^4
class Solution { public int search(int[] nums, int target) { for(int i =0;i
结果:
是不是要来句**,那么简单无脑的代码居然打败了那么多。class Solution { public int search(int[] nums, int target) { int l = 0, h = nums.length - 1, m = 0; whle (l <= h) { m = l + (h - l) / 2; if (nums[m] == target) { return m; } // 先根据 nums[m] 与 nums[l] 的关系判断 m 是在左段还是右段 if (nums[m] >= nums[l]) { // 再判断 target 是在 m 的左边还是右边,从而调整左右边界 l 和 h if (target >= nums[l] && target < nums[m]) { h = m - 1; } else { l = m + 1; } } else { if (target > nums[m] && target <= nums[h]) { l = m + 1; } else { h = m - 1; } } } return -1;}}
结果:
转载地址:http://xwwzi.baihongyu.com/