lectcode-搜索旋转排序数组Ⅱ
要求 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 示例 示例 1: 输入: nums = [2,5,6,0,0,1,2], target = 0 输出: true 示例 2: 输入: nums = [2,5,6,0,0,1,2], target = 3 输出: false 代码 二分查找法 bool search(vector<int>& nums, int target) { int n = nums.size(); int left = 0,right = n-1; while (left <= right) { int mid = left + (right - left) / 2; if (nums[mid] == target) { return true; } if (nums[left] == nums[mid]) { left++; continue; } //前半部分有序 if (nums[left] < nums[mid]) { //target在前半部分 if (nums[mid] > target && nums[left] <= target) {