程序员面试金典 - 面试题 08.03. 魔术索引(二分递归)

1. 题目

魔术索引。 在数组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]之间

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/magic-index-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 二分法,如果找到中点满足,还需在左半部分继续找
  • 中点不满足,两侧查找
  • 当找到了一个idx以后,区间的端点需要小于idx,才继续找
class Solution {bool foundOne = false;int idx = INT_MAX;
public:int findMagicIndex(vector<int>& nums) {findidx(nums,0,nums.size()-1);if(idx == INT_MAX)return -1;return idx;}void findidx(vector<int>& nums,int l, int r){if(l > r)return;int mid = l+((r-l)>>1);if(nums[mid] == mid){idx = min(idx, mid);foundOne = true;}if(foundOne){   if(idx > l)findidx(nums,l,mid-1);}else{findidx(nums,l,mid-1);findidx(nums,mid+1,r);}}
};

在这里插入图片描述

  • 下面的解法也很新鲜
class Solution {
public:int findMagicIndex(vector<int>& nums) {int idx = 0;while(idx < nums.size()){if(nums[idx] == idx)return idx;else if(nums[idx] > idx)//【0】=5,那么后面直接跳到5处idx = nums[idx];elseidx++;}return -1;}
};

在这里插入图片描述

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

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

相关文章

Meta提出九头蛇注意力机制,比传统注意力快197倍,且准确率更高!

文 | 丰色 发自 凹非寺源 | 量子位尽管Transformer已经开始在诸多视觉任务上“大展身手”&#xff0c;但还有一个问题。那就是在处理大图像上计算比较费劲。比如面对一个1080p的图时&#xff0c;它会有超过60%的计算量都耗费在了创建和应用注意矩阵上。究其原因&#xff0c;主要…

怎么画单极交流放大电路波形图_区别在哪?:VCC、VDD、VEE、VSS、数字地、模拟地、信号地、交流地、直流地!...

【smt接单中】热烈祝贺张飞电子正式建成多条进口贴片加工流水线&#xff0c;下单送视频&#xff0c;狂优惠3个月&#xff01;&#xff01;&#xff01;张飞电子&#xff0c;smt加工&#xff0c;接单客服如下&#xff1a;客服小姐姐:笑笑 客服小姐姐:萌萌电话:18994463546 …

母版页(Master Pages)--轉載

母版页&#xff08;Master Pages&#xff09; http://blog.csdn.net/iiboy/  ASP.NET 1.x中最突出的缺点之一是它缺少对页面模板的支持。欠缺的是定义其他页面可以继承的“母版页”能力。开发人员通过使用用户控件&#xff08;它们可以容易地在页面之间复制&#xff09;创建页…

清华团队训了个AI,掌握了互联网流量密码…

随着NLP深入发展&#xff0c;AI写作风生水起。如果说自媒时代&#xff0c;UGC&#xff08;User Generated Content&#xff0c;用户生成内容&#xff09;是主流&#xff1b;智媒时代&#xff0c;AIGC是否会爆火&#xff1f;早听说过用AI写文章&#xff0c;以前小编我也试过用一…

程序员面试金典 - 面试题 08.10. 颜色填充(BFS/DFS)

1. 题目 颜色填充。编写函数&#xff0c;实现许多图片编辑软件都支持的“颜色填充”功能。 给定一个屏幕&#xff08;以二维数组表示&#xff0c;元素为颜色值&#xff09;、一个点和一个新的颜色值&#xff0c;将新颜色值填入这个点的周围区域&#xff0c;直到原来的颜色值全…

excel两列数据对比找不同_Excel“找不同”小妙招来啦,请查收

1、同表格两列数据找不同(1)对应位置找不同方法&#xff1a;选中待对比区域&#xff0c;按【Ctrl】组合键即可将不同之处标注出来。(2)位置不定找不同方法&#xff1a;依次点击“开始——条件格式——突出显示单元格显示规则——重复值”&#xff0c;然后设置对应突出显示颜色即…

谷歌PaLM杀疯了,已从语言模型进化成机器人大脑??

文 | 天于刀刀开篇小编想了解一下&#xff0c;有多少小伙伴和我一样在看完《复联》后对钢铁侠托尼的智能管家贾维斯非常眼馋&#xff0c;然后坚定了自己 all in 人工智能算法这条&#xff08;不归&#xff09;路的&#xff1f;理想中&#xff1a;你是个成熟的 AI 管家&#xff…

程序员面试金典 - 面试题 17.04. 消失的数字(数学/位运算)

1. 题目 数组 nums 包含从0到n的所有整数&#xff0c;但其中缺了一个。 请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&#xff1f; 注意&#xff1a;本题相对书上原题稍作改动 示例 1&#xff1a; 输入&#xff1a;[3,0,1] 输出&#xff1a;2示例 2&#xff1…

前两年在MSDN里找到的HTC示例,一直没用过,先在这里存个备份

下载地址&#xff1a;http://files.cnblogs.com/bobowu/HTC%20Sample%20from%20MSDN.zip包括&#xff1a;calendar、colorpick、coolbar、dataselect、imagerollover、mask、menu、movable、mpc、rowover、slider、tooltips最近只用过movable来实现在地图的拖动效果&#xff0c…

文件标识符无效。使用 fopen 生成有效的文件标识符。_「存储架构」块存储、文件存储和对象存储(第1节)...

全球传输和生成的数据比以往任何时候都多。国际数据公司(IDC)的分析师预计&#xff0c;到2025年&#xff0c;全球数据层将增至163zb。这比2016年16.1 ZB的数据增长了1000%以上。数据大量增加的原因是多方面的:生成数据的来源和设备比以前多得多——嵌入式系统和设备正在收集数据…

微软,把数据中心部署到了海底…

源 | 直观学机械、蓝点网2014年微软首次提出了水下数据中心概念&#xff0c;当时认为这个概念有望为沿海人口提供高速云服务&#xff0c;并节省能源。2015年&#xff0c;微软在太平洋开展为期105天的部署过程中证明了水下数据中心概念是切实可行的。2018年&#xff0c;微软把一…

程序员面试金典 - 面试题 16.15. 珠玑妙算(map计数)

1. 题目 珠玑妙算游戏&#xff08;the game of master mind&#xff09;的玩法如下。 计算机有4个槽&#xff0c;每个槽放一个球&#xff0c;颜色可能是红色&#xff08;R&#xff09;、黄色&#xff08;Y&#xff09;、绿色&#xff08;G&#xff09;或蓝色&#xff08;B&am…

python方向键控制角色_python方向键控制上下左右代码

本文所示代码实现python编程方向键控制图片上下左右&#xff0c;我们首先看下演示结果。 演示&#xff1a;实例代码&#xff1a; bif"1.jpg" mif"2.jpg" import pygame,sys from pygame.locals import * pygame.init() screenpygame.display.set_mode((640…

测试ASP.NET 2.0中Gridview控件高级技巧

ASP.NET 2.0中&#xff0c;新增加的gridview控件的确十分强大&#xff0c;弥补了在asp.net 1.1中&#xff0c;使用datagrid控件时的不足之处。因为在asp.net 1.1中&#xff0c;在使用datagrid时&#xff0c;很多情况下依然要编写大量的代码&#xff0c;十分不方便&#xff0c;而…

一场AI技术引发的金融业“降本增效”

文 | 卖萌酱大家好&#xff0c;我是卖萌酱。“全面赋能千行百业”是AI的重要使命&#xff0c;政务、法律、金融、医疗、制造等传统行业往往智能化程度低&#xff0c;在效率、成本和收益方面蕴藏着巨大的优化空间。其中&#xff0c;金融业&#xff0c;就正在AI技术的赋能下&…

LeetCode 999. 车的可用捕获量

1. 题目 在一个 8 x 8 的棋盘上&#xff0c;有一个白色车&#xff08;rook&#xff09;。也可能有空方块&#xff0c;白色的象&#xff08;bishop&#xff09;和黑色的卒&#xff08;pawn&#xff09;。它们分别以字符 “R”&#xff0c;“.”&#xff0c;“B” 和 “p” 给出…

matlab 转换为正整数_【MATLAB】专题1笔记 MATLAB基础知识

视频课程参考&#xff1a;https://www.bilibili.com/video/BV19J411W7Ta数值问题-->求解算法-->程序实现-->结果分析MATLAB 功能 &#xff1a;数值计算&#xff0c;符号计算&#xff0c;图形绘制&#xff0c;程序流程绘制&#xff0c;工具箱数值计算方法&#xff1a…

showModalDialog和showModelessDialog使用心得

一、showModalDialog和showModelessDialog有什么不同&#xff1f;  showModalDialog&#xff1a;被打开后就会始终保持输入焦点。除非对话框被关闭&#xff0c;否则用户无法切换到主窗口。类似alert的运行效果。  showModelessDialog&#xff1a;被打开后&#xff0c;用户可…

python网络编程内容_Python网络编程

本文要写的内容也称为Python套接字编程&#xff0c;并简单介绍socketserver类。参考教程主要是《Python核心编程》。 首先&#xff0c;客户端/服务器模型&#xff0c;客户端向服务器发送请求&#xff0c;在请求合理的情况下&#xff0c;服务器返回客户端需要的资源&#xff0c;…

程序员面试金典 - 面试题 16.17. 连续数列(DP/分治)

1. 题目 给定一个整数数组&#xff08;有正数有负数&#xff09;&#xff0c;找出总和最大的连续数列&#xff0c;并返回总和。 示例&#xff1a; 输入&#xff1a; [-2,1,-3,4,-1,2,1,-5,4] 输出&#xff1a; 6 解释&#xff1a; 连续子数组 [4,-1,2,1] 的和最大&#xff0c…