在linux系统上用什么做网站,1有免费建网站,wordpress修改主题文件夹,html5网站开发语言题目链接#xff1a;33. 搜索旋转排序数组 - 力扣#xff08;LeetCode#xff09;
同样是要在数组中查找元素#xff0c;不同的是这次的数组是这样//的#xff0c;升序数组#xff0c;但是往前移动了一下#xff0c;也就是两段升序#xff0c;456123这样
看了一位天才…题目链接33. 搜索旋转排序数组 - 力扣LeetCode
同样是要在数组中查找元素不同的是这次的数组是这样//的升序数组但是往前移动了一下也就是两段升序456123这样
看了一位天才的思路把分段升序数组变成单纯的升序数组然后直接二分
因为题目说了元素不超过10000那么就给第二段升序的部分加上10000这样就是升序数组了如果目标元素小于nums[0]说明它在第二段里面也给它加上10000不要误会循环加是O(n)的复杂度只需要在比较的时候相加即可
class Solution {
public:int search(vectorint nums, int target) {int left 0, right nums.size() - 1;if (target nums[0])target 10000;while (left right) {int mid (left right) / 2;if (nums[mid] nums[0])nums[mid] 10000;if (nums[mid] target)return mid;if (target nums[mid])right mid - 1;elseleft mid 1;}return -1;}
};