【数组】面试题 08.03. 魔术索引(简单)

面试题 08.03. 魔术索引 线性遍历法的时间复杂度为O(n),二分查找法的时间复杂度为O(log n)。当数组规模非常大时,二分查找法明显优于线性遍历法。线性遍历法的空间复杂度是O(1),而二分查找法使用了递归,因此空间复杂度是O(log n)。线性遍历法实现简单,适合快速编写和理解。二分查找法需要更细致的递归控制,但在效率上有优势。在处理有序数组中的魔术索引问题时,我们可以根据需求选择合适的解法。如果数据规模较小且没有性能要求,使用线性遍历法简单易行;如果需要处理大规模数据,二分查找法则提供了更高效的解决方案。 阅读详情

【题目】
魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。
【示例1】
输入:nums = [0, 2, 3, 4, 5]
输出:0
说明: 0下标的元素为0
【示例2】
输入:nums = [1, 1, 1]
输出:1
【提示】
nums长度在[1, 1000000]之间
此题为原书中的 Follow-up,即数组中可能包含重复元素的版本
【代码】

class Solution {
public:
    int findMagicIndex(vector<int>& nums) {
        vector<int> rs;
        for(int i=0;i<nums.size();i++)
            if(nums[i]==i)
                rs.push_back(i);
        if(rs.size()==0)
            return -1;
        sort(rs.begin(),rs.end());
        return rs[0];
    }
};
C++实现索引表 用C++实现一个简单的索引表,内有详细代码,欢迎下载 立即下载

相关推荐

病理图像处理个人手札(三)WSI & MIL

1.什么是WSI? WSI全称是Whole Slide Image,也就是全视野数字切片,主要应用在病理学细胞图像领域。WSI 是利用数字扫描仪对传统的病理切片进行扫描,采集具有高分辨率的数字图像,再通过计算机将得到的碎片化图像进行无缝拼接整合,制作可视化数字图像的一项技术。与传统载玻片相比,很好地解决了传统的玻璃切片易损坏、易褪色、易丢片、检索困难的问题。 一言以蔽之,WSI是对传统载玻片进行数字化。 由于是全视野,因此它将包含多尺度的切片在一个文件上面。因此WSI将使用到金字塔模型满足其支持不同分辨率的

baiweizeng的博客 1万+

魔术索引

题目描述 在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个升序数组,元素值各不相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。 给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。 测试样例: [1,2,3,4,5] 返回:false class MagicIndex { pub

coolwriter的博客 313

基于MATLAB/Simulink与WSL2的ROS2实时联合仿真实践

本文详细介绍了基于MATLAB/Simulink与WSL2的ROS2实时联合仿真实践。通过环境配置、PX4仿真环境搭建、自定义消息生成、Simulink通信实现及实时优化等步骤,提供了完整的无人机位置控制案例,帮助开发者实现高精度的实时联合仿真。

red88的博客 204

C++ 魔术索引2

#include<iostream> using namespace std; #include<vector> /** 在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。 给定一个不下降序列,元素值可能相同,编写一个方法, 判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。 给定一个int数组A和int n代表数组大小, 请返回一个...

WYXHAHAHA123的博客 376

硬件之光实战篇--Boost

当开关管处于关闭状态时,由于电感中的电流在短时间内不能瞬间消失,因此它会产生一个电感电动势,在电容器上加上一个高电压,从而使输出电压变高。--------------------------------------------------------分割线----------------------------------------------------------------在应用中,升压芯片需要根据负载电路的需求,选择合适的电感和电容等元器件,以达到所需要的升压倍数和输出电压。

m0_58664890的博客 2105

解决turmex安装kali报错问题

在手机上安装好turmex后,都喜欢安装一个Linux系统,我当时安装的时kali,但是安装过程中,报错不断。 2019.8.24更新 1,出现问题首先看下载kali源文件是否完整 安装步骤中,会显示[解压中.....] ,可以看到解压的大小。 如图所示,完整源文件不小于81M。 如果源文件过小,则说明下载错误,而且在remove kali这个命令下,是不会删除源文件的,下一次安装只...

WeiLuckyStrike的博客 1万+

LeetCode面试题 08.03. 魔术索引 每日一题7月31

问题描述: 魔术索引。 在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/magic-index-lcci 示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0 示例2: ...

wuheng248113004的博客 319

MATLAB功率谱函数psd与pwelch的使用

在网上看到 clear; Fs=1000; n=0:1/Fs:1; y=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); Nfft=1000; window=hanning(100); noverlap=20; dflag='none'; [Pxx,f]=psd(y,Nfft,Fs,window,noverlap); figure plot(f,10*log10(Pxx)); xlabel('frequency/Hz');ylab

qq_41687938的博客 2万+

对于有A[0…N]有序的数组,判断是否存在A[i]=I 如果存在的话返回Index,

对于有A[0…N]有序的数组,判断是否存在A[i]=I 如果存在的话返回Index, 对于有序数组的查找,给定一个key,优先想到的是折半查找,其时间复杂度为O(log2N) 但题目中要求的是动态的指定一个key,key应当是从0-N-1, 对于每一个Key都应用折半查找的话,时间复杂度会相应的增加 int[] a = new int[10] { 1, 2, 3...

weixin_33937499的博客 683

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4376

Revit模型转点云全流程:从OBJ导出到CloudCompare点云生成(2020版)

本文详细介绍了将Revit模型转换为点云数据的完整流程,特别针对Revit 2020用户。通过使用OBJ导出插件和开源软件CloudCompare,实现从模型导出、网格采样到生成结构化PCD点云的全过程,并提供了关键参数设置与常见问题解决方案,为BIM与三维数字孪生应用提供技术支持。

oo7890的博客 155

力扣题解-面试题 08.03. 魔术索引

力扣题解,面试题 08.03. 魔术索引 利用二分查找,基于分治法思想解决问题。

lpp 5341

OpenCV-Python实战(3)——OpenCV中绘制图形与文本

OpenCV 是一个的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。本文介绍了 OpenCV 提供的与绘制图形和文本相关的函数。在图形方面,我们了解了如何绘制基本图形(直线、矩形和圆形等)以及高级图形(剪裁线、箭头、椭圆和多边形)。在文本方面,我们了解了如何绘制文本以及 OpenCV 库中的所有可用字体。

盼小辉丶的博客 2万+

LeetCode 面试题 08.03. 魔术索引 | Python

无摘要

"大梦三千秋的博客 918

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【面试题 08.03】 魔术索引

题目 题目链接 魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。 示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0 示例2: 输入:nums = [1, 1, 1] 输出:1 提示: nums长度在[1, 1000000]之间 实现思路1 (暴力) 暴力解法:时间复杂度

WormholeStack 909

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

leetcode面试题 08.03. 魔术索引

文章目录题目:面试题 08.03. 魔术索引基本思想:一次遍历基本思想2:跳跃遍历(注意到这个题给的数组是有序的) 题目:面试题 08.03. 魔术索引 魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。 示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0 示例2: 输入:nums

yyf_blog 473

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

leetcode 面试题 08.03. 魔术索引

leetcode 面试题 08.03. 魔术索引 题目详情 题目链接 魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。 示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0 示例2: 输入:nums = [1, 1, 1] 输出:1 说明: nums长度在[1, 1000000

qq_33789406的博客 197

leetcode 面试题08.03 魔术索引--日常刷题

leetcode 面试题08.03 魔术索引 二分剪枝 思路与算法 此问题如果用暴力的方法来解决,我们只需要对原数组从前往后进行一次遍历,找到第一个可行的位置返回即可,这里不再赘述。而本方法会进行一定程度的剪枝,在一些情况下会达到较优的时间复杂度,在最差情况下仍会退化成线性的时间复杂度,这里我们分两种情况讨论。 第一种情况是数组中只有一个满足条件的答案。我们假设这个答案为 ii,那么意味着 [0 \ldots i-1][0…i−1] 的值均小于自身的下标,[i+1 \ldots n-1][i+1…n−1]

qq_17014531的博客 242

面试题 08.03:魔术索引

面试题 08.03:魔术索引题目解题方法一:顺序遍历方法二:二分递归 题目 题目链接 魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。 示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0 示例2: 输入:nums = [1, 1, 1] 输出:1 解题 注意:题目中没

菊头蝙蝠的博客 544

leetcode 面试题 08.03. 魔术索引(2020.7.31)

【题目】面试题 08.03. 魔术索引 魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。 示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0 示例2: 输入:nums = [1, 1, 1] 输出:1 提示: nums长度在[1, 1000000]之间 【解题思路1】

Sophia_fez的博客 589

LeetCode面试题 08.03魔术索引

通过解决魔术索引问题,我们深入理解了数组的遍历操作以及如何根据题目条件来灵活编写代码。虽然朴素遍历法在本题中能满足需求,但对于大规模数据,探索更高效的算法(如优化的二分查找等)具有重要意义,这也为我们在算法学习的道路上提供了更多的思考方向。希望本文能帮助你更好地理解和解决这一有趣的算法问题。

qq_64604732的博客 752

LeetCode【每日一题】_面试题 08.03. 魔术索引_java

面试题 08.03. 魔术索引问题描述题解暴力匹配二分查找 问题描述 面试题 08.03. 魔术索引 魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。 示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0 示例2: 输入:nums = [1, 1, 1] 输出:1 说明:

weixin_48598155的博客 204
上一篇: 【数组】922. 按奇偶排序数组 II(简单)
下一篇: 【数组】1002. 查找常用字符(简单)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值