当前位置: 首页 > news >正文

LeetCode 33题:搜索旋转排序数组

目录

题目

思路

代码

暴力解法

分方向法

二分法


题目

整数数组 nums 按升序排列,数组中的值 互不相同 。

在传递给函数之前,nums 在预先未知的某个下标 k0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。

给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。

你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

示例 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
  • -104 <= nums[i] <= 104
  • nums 中的每个值都 独一无二
  • 题目数据保证 nums 在预先未知的某个下标上进行了旋转
  • -104 <= target <= 104

思路

不考虑要求时间复杂度为 O(log n) 的算法的话

  • 可以暴力解法,直接从开始往后遍历。
  • 也可以先比较nums[ 0 ],判断是否与target相等,相等就直接返回0,如果大于target,则从后往前遍历,否则从前往后遍历。

考虑时间复杂度可以利用二分法查找。

代码

暴力解法

int search(int* nums, int numsSize, int target)
{int i;for(i =0; i < numsSize; i++ ){if(nums[i]== target){return i;}}return -1;
}

 

 我只不过不 李姐 理解为什么暴力解法的数据不算差。 

分方向法

int search(int* nums, int numsSize, int target)
{if(nums[0]<target){int i;for(i=0;i<numsSize&&target>nums[i];i++);if(target==nums[i]&&i<numsSize){return i;}}else if(nums[0]>target){int i;for( i=numsSize-1;i>=0&&target<nums[i];i--);if(target==nums[i]&&i>=0){return i;}        }else return 0;return -1; 
}

 

 

二分法

#include<stdio.h>
#include<stdlib.h>int dichsearch(int nums[],int low,int high,int target);
int search(int* nums, int numsSize, int target);int main()
{int nums[7]={4,5,6,7,0,1,2};printf("%d",search(nums,7,0));
}int search(int* nums, int numsSize, int target)
{int t;for(t=0;t<numsSize-1&&nums[t]<nums[t+1];t++);if(nums[0]<target){return dichsearch(nums,0,t,target);}else if(nums[0]>target){return dichsearch(nums,t+1,numsSize-1,target);}else return 0;
}int dichsearch(int nums[],int low,int high,int target)
{while(low<=high){int mid=(low+high)/2;if(nums[mid]<target)low=mid+1;else if(nums[mid]>target)high=mid-1;else return mid;}return -1;
}

 

 

相关文章:

LeetCode 33题:搜索旋转排序数组

目录 题目 思路 代码 暴力解法 分方向法 二分法 题目 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 …...

用python来爬取某鱼的商品信息(1/2)

目录 前言 第一大难题——找到网站入口 曲线救国 模拟搜索 第二大难题——登录 提一嘴 登录cookie获取 第一种 第二种 第四大难题——无法使用导出的cookie 原因 解决办法 最后 出现小问题 总结 下一篇博客&#xff08;大部分代码实现&#xff09; 前言 本章讲理…...

网工最常犯的9大错误,越早知道越吃香

下午好&#xff0c;我的网工朋友 我们常说&#xff0c;人要学会避免错误&#xff0c;尤其是对在职场生活的打工人来说&#xff0c;更是如此。 学生时代&#xff0c;我们通过错题本收集错误&#xff0c;提高刷题正确率和分数&#xff0c;但到了职场&#xff0c;因为没有量化的…...

Windows - UWP - 网络不好的情况下安装(微软商店)MicrosoftStore的应用

Windows - UWP - 网络不好的情况下安装&#xff08;微软商店&#xff09;MicrosoftStore的应用 前言 UWP虽然几乎被微软抛弃了&#xff0c;但不得不否认UWP应用给用户带来的体验。沙箱的运行方式加上微软的审核&#xff0c;用户使用起来非常放心&#xff0c;并且完美契合Wind…...

1040:输出绝对值

【题目描述】 输入一个浮点数&#xff0c;输出这个浮点数的绝对值&#xff0c;保留到小数点后两位。 【输入】 输入一个浮点数&#xff0c;其绝对值不超过10000。 【输出】 输出这个浮点数的绝对值&#xff0c;保留到小数点后两位。 【输入样例】 -3.14 【输出样例】 …...

[Docker精进篇] Docker部署和实践 (二)

前言&#xff1a; Docker部署是通过使用Docker容器技术&#xff0c;将应用程序及其所有相关依赖项打包为一个可移植、自包含的镜像&#xff0c;然后在任何支持Docker的环境中快速部署和运行应用程序的过程。 文章目录 Docker部署1️⃣为什么需要&#xff1f;2️⃣有什么作用&am…...

day9 | 28. 实现 strStr()、459.重复的子字符串

目录&#xff1a; 解题及思路学习 28. 实现 strStr() https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/ 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下…...

hive on tez资源控制

sql insert overwrite table dwintdata.dw_f_da_enterprise2 select * from dwintdata.dw_f_da_enterprise; hdfs文件大小数量展示 注意这里文件数有17个 共计321M 最后是划分为了21个task 为什么会有21个task&#xff1f;不是128M 64M 或者说我这里小于128 每个文件一个map…...

企业有VR全景拍摄的需求吗?能带来哪些好处?

在传统图文和平面视频逐渐疲软的当下&#xff0c;企业商家如何做才能让远在千里之外的客户更深入、更直接的详细了解企业品牌和实力呢&#xff1f;千篇一律的纸质材料已经过时了&#xff0c;即使制作的再精美&#xff0c;大家也会审美疲劳&#xff1b;但是你让客户远隔千里&…...

【问题解决】Git命令行常见error及其解决方法

以下是我一段时间没有使用xshell&#xff0c;然后用git命令行遇到的一些系列错误和他们的解决方法 遇到了这个报错&#xff1a; fatal: Not a git repository (or any of the parent directories): .git 我查阅一些博客和资料&#xff0c;可以解决的方式&#xff1a; git in…...

【100天精通python】Day34:使用python操作数据库_ORM(SQLAlchemy)使用

目录 专栏导读 1 ORM 概述 2 SQLAlchemy 概述 3 ORM&#xff1a;SQLAlchemy使用 3.1 安装SQLAlchemy&#xff1a; 3.2 定义数据库模型类&#xff1a; 3.3 创建数据表&#xff1a; 3.4 插入数据&#xff1a; 3.5 查询数据&#xff1a; 3.6 更新数据&#xff1a; 3.7 删…...

CCLINK IE转MODBUS-TCP网关modbus tcp协议详解

你是否曾经遇到过需要同时处理CCLINK IE FIELD BASIC和MODBUS两种数据协议的情况&#xff1f;捷米的JM-CCLKIE-TCP网关可以帮助你解决这个问题。 捷米JM-CCLKIE-TCP网关可以分别从CCLINK IE FIELD BASIC一侧和MODBUS一侧读写数据&#xff0c;然后将数据存入各自的缓冲区。接着…...

vue2根据不同的电脑分辨率显示页面内容及不同设备适配显示

1.安装插件: npm install postcss-px2rem px2rem-loader --save npm i lib-flexible --save 2.创建flexible.js,并在main.js引用 ;(function(win, lib) {var doc = win.document;var docEl = doc.documentElement;var metaEl = doc.querySelector(meta[name="viewport&…...

概率论:多维随机变量及分布

多维随机变量及分布 X X X为随机变量&#xff0c; ∀ x ∈ R , P { X ≤ x } F ( x ) \forall x\in R,P\{X\le x\}F(x) ∀x∈R,P{X≤x}F(x) 设 F ( x ) F(x) F(x)为 X X X的分布函数&#xff0c;则 &#xff08;1&#xff09; 0 ≤ F ( x ) ≤ 1 0\le F(x)\le1 0≤F(x)≤1 &am…...

flutter-第三方组件

卡片折叠 stacked_card_carousel 扫一扫组件 qr_code_scanner 权限处理组件 permission_handler 生成二维码组件 pretty_qr_code 角标组件 badges 动画组件 animations app更新 app_installer 带缓存的图片组件 cached_network_image 密码输入框 collection 图片保存 image_g…...

迪瑞克斯拉算法

迪锐克斯拉算法 简单来说就是在有向图中&#xff0c;给定一个图中具体的出发点&#xff0c;从这个点出发能够到达的所有的点&#xff0c;每个点的最短距离是多少。到不了的点&#xff0c;距离则是正无穷。有向&#xff0c;无负权重&#xff0c;可以有环。 所以说&#xff0c;迪…...

数据结构:力扣OJ题(每日一练)

目录 题一&#xff1a;环形链表 思路一&#xff1a; 题二&#xff1a;复制带随机指针的链表 思路一&#xff1a; 本人实力有限可能对一些地方解释的不够清晰&#xff0c;可以自己尝试读代码&#xff0c;望海涵&#xff01; 题一&#xff1a;环形链表 给定一个链表的头节点…...

【论文阅读】基于深度学习的时序预测——Informer

系列文章链接 论文一&#xff1a;2020 Informer&#xff1a;长时序数据预测 论文二&#xff1a;2021 Autoformer&#xff1a;长序列数据预测 论文三&#xff1a;2022 FEDformer&#xff1a;长序列数据预测 论文四&#xff1a;2022 Non-Stationary Transformers&#xff1a;非平…...

机器学习 | Python实现GBDT梯度提升树模型设计

机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计基本介绍模型描述模型使用参考资料基本介绍 机器学习 | Python实现GBDT梯度提升树模型设计。梯度提升树(Grandient Boosting)是提升树(Boosting Tree)的一种改进算法,GBDT也…...

elementUi表单恢复至初始状态并不触发表单验证

elementUi表单恢复至初始状态并不触发表单验证 1.场景再现2.解决方法 1.场景再现 左侧是树形列表&#xff0c;右侧是显示节点的详情&#xff0c;点击按钮应该就是新增一个规则的意思&#xff0c;表单内容是没有改变的&#xff0c;所以就把需要把表单恢复至初始状态并不触发表单…...

5分钟快速上手:用ncmdump解锁网易云音乐NCM格式,实现跨平台自由播放

5分钟快速上手&#xff1a;用ncmdump解锁网易云音乐NCM格式&#xff0c;实现跨平台自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在车载音响、手机自带播放器或其他音乐软件中播放而…...

别再让全连接层拖慢你的模型了!用PyTorch的AdaptiveAvgPool2d实现GAP,参数量直降90倍

用全局平均池化替代全连接层&#xff1a;PyTorch实战与90倍参数削减 当你面对一个训练缓慢、显存吃紧的卷积神经网络时&#xff0c;是否曾盯着全连接层那庞大的参数量感到无力&#xff1f;在边缘设备上部署模型时&#xff0c;是否因为全连接层的计算开销而不得不降低模型精度&a…...

Zotero SciPDF插件终极指南:3步实现文献PDF自动下载的完整方案

Zotero SciPDF插件终极指南&#xff1a;3步实现文献PDF自动下载的完整方案 【免费下载链接】zotero-scipdf Download PDF from Sci-Hub automatically For Zotero7 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scipdf 你是否曾因找不到论文PDF而焦虑&#xff1…...

突破Cursor API限制:cursor-free-vip架构解密与设备指纹重构技术深度解析

突破Cursor API限制&#xff1a;cursor-free-vip架构解密与设备指纹重构技术深度解析 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youv…...

SteamCleaner:一键释放60GB硬盘空间的专业游戏缓存清理工具

SteamCleaner&#xff1a;一键释放60GB硬盘空间的专业游戏缓存清理工具 【免费下载链接】SteamCleaner :us: A PC utility for restoring disk space from various game clients like Origin, Steam, Uplay, Battle.net, GoG and Nexon :us: 项目地址: https://gitcode.com/g…...

深入ALV交互:巧用modify_cell与协议内表实现跨行字段联动更新

1. ALV交互的核心挑战与解决方案 在SAP开发中&#xff0c;ALV&#xff08;ABAP List Viewer&#xff09;表格是最常用的数据展示和交互控件之一。但很多开发者都遇到过这样的难题&#xff1a;当用户修改某个单元格时&#xff0c;如何自动更新其他行甚至跨行的关联字段&#xff…...

Pixel Aurora Engine保姆级教程:v1.0.0版本LoRA动态加载全流程详解

Pixel Aurora Engine保姆级教程&#xff1a;v1.0.0版本LoRA动态加载全流程详解 1. 认识你的像素游戏机 Pixel Aurora Engine&#xff08;像素极光引擎&#xff09;就像一台来自未来的复古游戏机&#xff0c;它能把你天马行空的想法变成精美的像素艺术画作。最新1.0.0版本最大…...

低代码平台的API集成能力:决定你的数字化能否真正打通数据

数字化转型的核心诉求&#xff0c;从来不是搭建多少个孤立的业务应用&#xff0c;而是实现数据的自由流转与价值挖掘。当企业投入大量资源上线ERP、OA、CRM、MES等系统后&#xff0c;却常常陷入“数据孤岛”的困境——销售数据无法同步至财务核算&#xff0c;人事审批流程与业务…...

OpenClaw+Qwen3-14B科研助手:文献自动归档与摘要生成

OpenClawQwen3-14B科研助手&#xff1a;文献自动归档与摘要生成 1. 为什么需要自动化文献管理 去年写毕业论文时&#xff0c;我的Zotero里堆了487篇PDF文献。每天手动整理文献、标注关键词、写摘要要花2小时&#xff0c;最崩溃的是明明读过某篇文献&#xff0c;需要引用时却找…...

GLM-4.1V-9B-Base实战案例:会议纪要截图→待办事项→中文结构化提取

GLM-4.1V-9B-Base实战案例&#xff1a;会议纪要截图→待办事项→中文结构化提取 1. 项目背景与需求 在日常工作中&#xff0c;我们经常需要处理各种会议纪要截图。这些图片通常包含大量文字信息&#xff0c;需要人工整理成结构化待办事项。传统方法需要手动输入或复制粘贴&am…...