leetcode33
class Solution {
public:
int search(vector<int>& nums, int target)
{ //这个题是给一个排序数组,但是数组里面内容被平行移动了,现在要找到tagert所对应的下标
int len = nums.size();
//特殊情况先考虑掉
if (len == )
{
return -;
}
if (len == && target != nums[])
{
return -;
}
//正常情况,应该不能遍历一边数组吧,这样没有意义,应该也无法通过;虽然顺序被打乱了,但是部分还是有序的,我们还是使用二分查找
int left = ;
int right = len - ;
int mid = ;
while (left <= right)
{
mid = left + (right - left) / ;
if (target == nums[left])
{
return left;
}
if (target == nums[right])
{
return right;
}
if (target == nums[mid])
{
return mid;
}
//二分查找
if (nums[mid] >= nums[left])
{//左边有序
if (target > nums[left] && target < nums[mid])
{
right = mid - ;
}
else
{
left = mid + ;
}
}
else
{//右边有序
if (target > nums[mid] && target < nums[right])
{
left = mid + ;
}
else
{
right = mid - ;
}
}
}
return -;
}
};
leetcode33的更多相关文章
- LeetCode33 Search in Rotated Sorted Array
题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...
- LeetCode33—搜索旋转排序数组
方法一:先找到旋转点,然后根据目标值重新确定二分查找区域. 时间复杂度:用到两次二分查找,每次二分查找粗略的认为是O(logn),那么时间复杂度为2 * O(logn): 空间复杂度:O(1). in ...
- [Swift]LeetCode33. 搜索旋转排序数组 | Search in Rotated Sorted Array
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- (二分查找 结构体) leetcode33. Search in Rotated Sorted Array
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- 【1】【leetcode-33,81】 搜索旋转排序数组
(没思路) 33. 搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给 ...
- LeetCode33 搜索旋转排序数组
搜索旋转排序数组 题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标 ...
- Leetcode33.Search in Rotated Sorted Array搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这个目标值, ...
- 二分查找(通过相对位置判断区间位置)--17--二分--LeetCode33搜索旋转排序数组
搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转.( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中 ...
- LeetCode33题——搜索旋转排序数组
1.题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存 ...
随机推荐
- java中的线程问题(三)——继承Thread VS 实现Runnable的区别
从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thread类本身就实现了Runnable接口,如果一定要说它们有什么区别, ...
- Linux每天一个命令:nc/ncat
nmap-ncat.x86_64版nc/ncat nc/ncat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了.你能建立一个服务器,传输文件,与朋友聊天,传输流媒 ...
- DAY 13 开放封闭原则
装饰器: 即是用一个函数去拓展另一个函数,同时遵循开放封闭原则 开放封闭原则 对修改关闭,对拓展开放 不允许修改源代码以及调用方式 以下是无参函数的基本格式 def outer(func): def ...
- js使页面重定向
location.assign("http://www.baidu.com"); window.location="http://www.baidu.com"; ...
- HttpURLConnection与HttpClient浅析
转自:https://blog.csdn.net/u012838207/article/details/82867701 HttpURLConnection与HttpClient浅析 1. GET请求 ...
- 【webdriver自动化】将163登录邮箱的操作封装成多个方法去执行
login_info.txt: youxiang_99@163.com,XXXX youxiang_100@163.com,XXXX main.py: #注意:编码格式 #算法: (1)定义多个方法, ...
- spring ico
代码非常简单.如果缺少jar包将导致报错. 需要5个spring jar包和1个logging jar,否则报错. org.springframework.asm.jarorg.springframe ...
- PTA——洗牌
PTA 7-43 Shuffling Machine #include<stdio.h> int main() { int i,n,*result; scanf("%d" ...
- python: 递归函数(科赫雪花)
import turtle as t def kehe(size,n): #递归函数 if n==0: t.fd(size) #阶数为0时,为一直线 else: for i in [0,60,-120 ...
- Python基础:一、编程语言分类
编程语言主要从以下几个角度进行分类: 编译型和解释型 静态语言和动态语言 强类型语言和弱类型语言 编译型语言和解释型语言 编译和解释的区别是什么? 编译器是把源程序的每一条语句都编译成机器语言,并保存 ...