LeetCode 33. 搜索旋转排序数组(二分查找)

1. 题目

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。

你可以假设数组中不存在重复的元素。

你的算法时间复杂度必须是 O(log n) 级别。

2. 解题

参考我的博客 二分查找

循环数组性质:以数组中间点为分区,数组分成一个有序数组和一个循环有序数组。

如果首元素 arr[low] < arr[mid],左半部分:有序,右半部分:循环有序;
如果首元素 arr[low] > arr[mid],右半部分:有序,左半部分:循环有序;
判断查找的数是否在有序的半边范围内,更新上下限
在这里插入图片描述

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0, right = nums.size()-1, mid;while(left <= right) {mid = left+((right-left)>>1);if(nums[mid] == target)return mid;if(nums[left] < nums[mid])//左边有序 {if(nums[left] <= target && target < nums[mid])right = mid-1;elseleft = mid+1;}else if(nums[left] > nums[mid])	//右边有序{if(nums[mid] < target && target <= nums[right])left = mid+1;elseright = mid-1;}elseleft++;}return -1;}
};
测试数据
[9,5,6,7,8,9,9,9,9,9,9]
8

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 - EMNLP2020 | 低资源跨语言实体链接中的设计挑战

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;EMNLP 2020链接&#xff1a;https://arxiv.org/pdf/2005.00692.pdf1.背景介绍跨语言实体链接&#xff08;XEL&#xff09;旨在将任一非英语文本中的实体提及匹配到英语知识库上&#xff08;例如Wikip…

MSON,让JSON序列化更快

问题 我们经常需要在主线程中读取一些配置文件或者缓存数据&#xff0c;最常用的结构化存储数据的方式就是将对象序列化为JSON字符串保存起来&#xff0c;这种方式特别简单而且可以和SharedPrefrence配合使用&#xff0c;因此应用广泛。但是目前用到的Gson在序列化JSON时很慢&a…

屠榜各大CV任务!「百度顶会论文复现营」携Swin Transformer来袭!

目标检测刷到58.7 AP&#xff01;实例分割刷到51.1 Mask AP&#xff01;&#xff01;语义分割在ADE20K上刷到53.5 mIoU&#xff01;&#xff01;&#xff01;......Swin Transformer持续屠榜各大CV任务&#xff0c;并且均名列前茅&#xff01;通过分层体系结构&#xff0c;带来…

紧耦合(Tight Coupling)和松耦合(Loose Coupling)

在软件开发中&#xff0c;耦合&#xff08;Coupling&#xff09;是指模块或组件之间的依赖关系程度。紧耦合&#xff08;Tight Coupling&#xff09;和松耦合&#xff08;Loose Coupling&#xff09;是描述模块或组件之间耦合程度的两个概念。 紧耦合&#xff08;Tight Couplin…

百度任务型对话系统小记

意图扩展阅读&#xff1a; 古月哲亭: AAAI 2021 | 清华提出深度对齐聚类用于新意图发现&#xff1a;https://mp.weixin.qq.com/s/9dNs8TTERPdxmrVc3tF1zw 相关项目地址&#xff1a;https://github.com/thuiar/OKD-Reading-List 古月哲亭: 意图知识图谱的构建与应用&#xff1a…

论文浅尝 - EMNLP2020 | 跨媒体关键词预测: 多模态多头注意力和图像文本的统一框架...

论文笔记整理&#xff1a;柏超宇&#xff0c;东南大学硕士。文章链接&#xff1a;https://arxiv.org/pdf/2011.01565.pdf来源&#xff1a;EMNLP 2020动机社交媒体每天都会产生大量的内容。为了帮助用户快速捕捉所需内容&#xff0c;关键词预测受到越来越多的关注。尽管如此&…

从实际案例聊聊Java应用的GC优化

当Java程序性能达不到既定目标&#xff0c;且其他优化手段都已经穷尽时&#xff0c;通常需要调整垃圾回收器来进一步提高性能&#xff0c;称为GC优化。但GC算法复杂&#xff0c;影响GC性能的参数众多&#xff0c;且参数调整又依赖于应用各自的特点&#xff0c;这些因素很大程度…

LeetCode 162. 寻找峰值(二分查找)

1. 题目 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums&#xff0c;其中 nums[i] ≠ nums[i1]&#xff0c;找到峰值元素并返回其索引。 数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个峰值所在位置即可。 你可以假设 nums[-1] n…

谷歌:CNN击败Transformer,有望成为预训练界新霸主!LeCun却沉默了...

文 | ????????????????这几年&#xff0c;大家都说深度学习进入了预训练时代。作为一个入行不久的小白&#xff0c;我一直以为各类基于 Transformers 结构的预训练模型是 NLP 的巨大里程碑&#xff0c;CNN、RNN 老矣&#xff0c;只配作为手下败将。大家的文章似…

新词发现简介

原文链接&#xff1a;https://blog.csdn.net/weixin_43378396/article/details/103848628 新词发现是 NLP 的基础任务之一&#xff0c;通过对已有语料进行挖掘&#xff0c;从中识别出新词。新词发现也可称为未登录词识别&#xff0c;严格来讲&#xff0c;新词是指随时代发展而新…

论文浅尝 - AAAI2020 | 利用自然语言推断生成人称一致的对话

链接&#xff1a; https://arxiv.org/pdf/1911.05889.pdf动机虽然最近几年通过利用社交网络上大量人人交互数据训练开放域对话模型取得了很大的成功&#xff0c;但是这些数据驱动的对话系统仍然无法很自然的与人类对话&#xff0c;其中的一个主要问题就是对话系统缺乏一致的角色…

智能投放系统之场景分析最佳实践

美团点评作为业内最大的O2O的平台&#xff0c;以短信/push作为运营手段触达用户的量级巨大&#xff0c;每日数以千万计。 美团点评线上存在超过千万的POI&#xff0c;覆盖超过2000城市、2.5万个后台商圈。在海量数据存在的前提下&#xff0c;实时投放的用户在场景的选择上存在一…

7个提升PyTorch性能的技巧

文 | William Falcon源 | AI公园在过去的10个月里&#xff0c;在PyTorch Lightning工作期间&#xff0c;团队和我已经接触过许多结构PyTorch代码的风格&#xff0c;我们已经发现了一些人们无意中引入瓶颈的关键地方。我们非常小心地确保PyTorch Lightning不会对我们为你自动编写…

论文浅尝 - EMNLP2020 | 基于规则引导的协作 agent 知识图谱推理学习

论文笔记整理&#xff1a;叶橄强&#xff0c;浙江大学在读硕士&#xff0c;研究方向为知识图谱的表示学习和预训练。来源&#xff1a;EMNLP 2020现有的大多数基于行走的模型通过在提供可解释的决策的同时获得良好的性能&#xff0c;在知识图谱推理中显示出其优势。但在遍历过程…

Shield——开源的移动端页面模块化开发框架

一直以来&#xff0c;如何能更高效地开发与维护页面是Android与iOS开发同学最主要的工作和最关心的问题。随着业务的不断发展&#xff0c;根据特定业务场景产生的定制化需求变得越来越多。单一页面往往需要根据不同业务、不同场景甚至不同用户展示不同的内容。在这样的背景下&a…

1年排名前进13位 ,这个论题成顶会新宠!

写过论文的同学都知道&#xff0c;写久了真的会头秃&#xff0c;其中耗发量最高的当属论题和创新点。今天分享一套方法&#xff0c;这个方法已经帮助近3000位同学成功发&#xff08;拯&#xff09;表&#xff08;救&#xff09;论&#xff08;头&#xff09;文&#xff08;发&a…

字典树介绍

方法介绍 1.1、什么是Trie树 Trie树&#xff0c;即字典树&#xff0c;又称单词查找树或键树&#xff0c;是一种树形结构。典型应用是用于统计和排序大量的字符串&#xff08;但不仅限于字符串&#xff09;&#xff0c;所以经常被搜索引擎系统用于文本词频统计。它的优点是最大限…

LeetCode 50. Pow(x, n)(二分查找)

文章目录1. 题目2. 二分查找2.1 递归2.2 循环1. 题目 实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数。 示例 输入: 2.00000, 10 输出: 1024.00000 示例 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 1/22 1/4 0.25 说明: -100.0 < x < 100.0 n 是 32 位有符号…

OpenKG 祝大家 2021 新年快乐 —「2020 精选文章汇编」

过去的一年是不寻常的一年&#xff0c;虽然疫情改变了所有人的生活&#xff0c;但是它并没有击垮我们。这一年&#xff0c;大家依旧保持着开源开放的精神&#xff0c;持续地分享着知识图谱领域的技术动态、应用实践&#xff0c;同学们也持续不断地输出优质的论文笔记。OpenKG 继…