程序员面试金典——9.3魔术索引

LeetCode《程序员面试金典》面试题 08.03. 魔术索引 LeetCode 面试题 08.03. 魔术索引题目解题解题一:线性搜索 + 剪枝解题二:二分查找 + 剪枝 题目 注意点: 有序整数数组 可能存在多个魔术索引 数组可能包含重复元素 解题 解题一:线性搜索 + 剪枝 不过,既然给定数组是有序的,我们理应充分利用这个条件。 // javascript var findMagicIndex = function(nums) { let i = 0; while (i < nums.length) { if (i = 阅读详情

问题I

Solution1:我的答案

二分查找
A是升序的vector&lt;int&gt;vector&lt;int&gt;vector<int>
注意不要烦傻逼错误!!!

class MagicIndex {
public:
    bool findMagicIndex(vector<int> A, int n) {
        int low = 0, high = n-1, mid = 0;
        while(low <= high) {
            mid = (low + high)/2;
            if(A[mid] == mid)
                return true;
            else if(A[mid] < mid) 
                low = mid + 1;
            else 
                high = mid - 1;
        }
        return false;
    }
};

问题II

Solution1:我的答案,

A是不降序的vector&lt;int&gt;vector&lt;int&gt;vector<int>,这就稍微麻烦一点了。。。
书上的思路

class MagicIndex {
public:
    bool findMagicIndex(vector<int> A, int n) {
        // write code here
        int start = 0, end = 0;
        return my_find(A, n, start, end);
    }
    
    bool my_find(vector<int> A, int n,int start=0,int end =0) {
        // write code here
        /*
        事实上,看到A[5]=3时按照二分查找的做法,我们需要递归搜索右半部分。不过,如搜索左半部分,
        我们可以跳过一些元素,值递归搜索A[0]到A[3]的元素。A[3]是第一个可能成为魔术索引的元素。
        综上:我们得到一种搜索模式,先比较midIndex和midValue是否相同。
        然后,若两者不同,则按如下方式递归搜索左半部分和右半部分。
 
        左半部分:搜索索引从start到min(midIndex-1,midValue)的元素。
 
        右半部分:搜索索引从max(midIndex+1,midValue)到end的元素。
        */
        if (start > end || start < 0 || end > n)
        {
            return false;
        }
        int mid = (end + start) / 2;
        if (A[mid] == mid)
        {
            return true;
        }
        else
        {
            int leftEnd = min(mid - 1, A[mid]);
            int rightStart = max(mid + 1, A[mid]);
            return my_find(A, n, start, leftEnd) || my_find(A, n, rightStart, end);
        }
    }
};
(纯干货)备战“金3银4”,拿下这101道面试题“10拿9稳””! 前言: 马上就到了“金9银10的”面试季,在这里作者给各位整理了一些大厂常用的面试题,希望能对各位有所帮助 正文: 1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理库里面进行备案。 然后,要获取判断的依据和标准: 根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据; 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷; 根据用户的一般使用习惯,来确认是 阅读详情

相关推荐

程序员必备的面试技巧

但你要知道项目奖金、月度绩效都是浮动不稳定的,有些误差可以达到2-3K以上,所以一般像这种薪资结构的,基础薪资有保障,你的总体工资才会高。特别对于没有面试经验的测试人员,HR不主动说明,自己是很少去询问的。(1)问你技术相关的知识点,至少都应该知道(例如mysql,你需要了解它的引擎、索引结构、事务、锁、特性、高可用等等),知识点的原理必须都了解(为什么有多种引擎?(3)碰到气场弱的面试官,把自己知道的都说出来(这种面试官不知道该问什么,等着他问有时候还不如自己说,把自己擅长的都给说了,对你对他都有好处)

m0_67597657的博客 707

程序员面试金典——魔术索引1

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

sinat_24048051的博客 429

一文搞懂 RC Correlation Scale Factor 的生成与应用

pre-route 用的是统计估算模型,post-route 用的是详细布线提取,signoff 用的是第三方 QRC 或 StarRC——三个工具,三套参数体系,结果自然天差地别。不同 RC corner(rc_worst/rc_best/rc_typical)对应不同的工艺角和温度环境,每个 corner 的 R/C 偏差比例不同,必须分别生成和应用各自的 scale factor。别被名字骗了,这个工具专门干一件事——统计拟合两组 SPEF 之间的偏差,自动推荐最优 scaling factor。

weixin_47770727的博客 548

LeetCode-魔术索引

直接遍历这个数组的最差情况比较简单,但是如果不存在这样的数字,那么就得遍历整个数组 我们可以使用剪枝的二分搜索来提前结束遍历 class Solution { public int findMagicIndex(int[] nums) { return getAnswer(nums, 0, nums.length - 1); } public int getAnswer(int[] nums, int left, int right) { ..

yshuoo的博客 296

排除 AcroForm 中 JavaScript 脚本的 Bug

本文介绍了Acrobat JavaScript脚本故障排除的基本方法。首先应检查控制台窗口的错误报告,通过具体示例演示了5类常见错误:语法错误(如缺少大括号)、未终止字符串、未定义变量、运算符混淆及变量作用域问题,并逐步给出修复方案。文章还提供了调试流程UML图和实用经验总结,强调关注细节(如分隔符匹配)、正确使用运算符和变量作用域等要点。最后建议采用系统化调试方法,包括关闭/重新打开表单等完整性测试。

小猫三两只。 1501

(project generation have a problem)STM32CubeMX生成工程一直报错项目生成有问题[玄学三步解]

解决办法 第一步,检查自己是不是真的配置的不对,JAVA安装没,pack路径设置的对不对,这里有一位前辈的博文写的非常好,附加链接https://blog.csdn.net/ybhuangfugui/article/details/52225736#commentBox 第二步,如果按照前辈的博文设置的都一模一样,还是不对,想我下图这样。 那你来对地方了 方法很简单,你把你生成工程文件的路径彻底的...

展桑博客-BenjieBlog 2922

程序员面试金典: 9.9 递归和动态规划 9.3魔术索引

#include #include using namespace std; /* 问题:在数组A[0 ... n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个 有序整数数组,元素值各不相同,编写一个方法,在数组A中找出一个魔术索引,如果存在的话。 分析: 因为A{i] = i,所以魔术索引对应 A[i] - i = 0, 可以猜想,将令数组A中A[

qingyuanluofeng的专栏 412

(南京观海微电子)——TCON介绍

TCON又称:逻辑板,控制板,在液晶电视里的作用和CRT中的视放板相当,但有本质的区别,逻辑板不是一个纯粹的信号放大器,它输入是LVDS格式信号,而不是RGB。逻辑板的作用是把数字板送来的LVDS或TTL图像数据信号,时钟信号进行处理移位寄存器存储将图像数据信号,时钟信号转换成屏能够识别的控制信号行列信号RSDS控制屏内的MOSFET管工作而控制液晶分子的扭曲度。目前国内主要的TCON板生产商有视显光电。传统TCON的布局主要分为以下两种:X+C分离式和X+C一体式。

m0_75095200的博客 3834

程序员面试金典 8.3

Magic Index:如果一个数组A中的索引i满足A[i] = i,则i就是一个魔术索引。给定一个有序数组,查找其中最小的魔术索引,不存在则返回-1。 最简单的方法就是对数据进行一次遍历,这样时间复杂度为O(n),注意到数组是有序的,所以有可能实现一个O(logn)的算法。 0 1 2 3 4 5 6 7 8 9 10 0 1 2 2 2 3 4 7 9 12 13 在上面的...

RayoNicks的博客 234

别再浪费主板上的PCIE插槽了!手把手教你用VL805芯片打造高速USB3.0扩展坞

本文详细介绍了如何利用VL805芯片将主板闲置的PCIE插槽改造为高性能USB3.0扩展坞。从芯片选型、电路设计到焊接工艺和系统调试,提供了一套完整的实战指南,帮助用户充分释放硬件潜能,实现高达5Gbps的传输速度。

weixin_27134495的博客 326

074.多任务学习:在YOLO基础上同时进行分割、关键点检测

本文探讨了在YOLOv5模型中实现检测、分割和关键点多任务的技术方案。通过分层特征抽取策略(检测用深层、分割用浅深融合、关键点用中层)解决特征共享问题;采用不确定性加权方法自动平衡多任务损失;设计了支持三种标签的数据流处理方式;并分享了推理部署时的后处理技巧。实践表明,合理的多任务设计可以提升主任务性能,但需权衡标注成本和推理效率。最终方案选择在训练时引入分割作为辅助任务,推理时仅保留检测和关键点,实现了检测mAP提升2.3%的优化效果。

2603_95664987的博客 44

刷题程序员面试金典第9章

目录 1、上楼梯 2、机器人走方格I 3、机器人走方格II 4、魔术索引 II 1、上楼梯 有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007 给定一个正整数intn,请返回一个数,代表上楼的方式数。保证n小于等于100000。 测试样例1: 1 返回:1...

ymszzu的博客 259

uboot引导vxworks6.9(T4240) 启动

vxworks内核配置下搜索RAM_LOW_ADRS, 值为0x01000000, 是vxworks下载启动的地址,uboot启动时会用到。vxworks6.9 t4240用的是32地址空间,uboot下用的是64位地址空间,去uboot下修改law物理地址空间为32位。vxworks下flash基地址为 0xff000000, 将vx下的地址修改为0xe0000000,和uboot下地址一致。uboot下flash基地址为0xe000000,vxworks内核配置为build-in 符号表。

珂珂可爱多 3236

算法 | 第1章 数组与字符串相关《程序员面试金典》

数组与字符串相关算法笔记前言1. 经验总结2.3.最后 前言 本系列笔记主要记录笔者刷《程序员面试金典》算法的一些想法与经验总结,按专题分类,主要由两部分构成:经验值点和经典题目。其中重点放在经典题目上; 1. 经验总结 对应课本【P76】页; 数组问题与字符串问题往往是相通的; 散列表是一种通过将键(key)映射为值(value)从而实现快速查找的数据结构; 2. 3. 最后 新人制作,如有错误,欢迎指出,感激不尽! 欢迎关注公众号,会分享一些更日常的东西! 如需转载,请标注出

多氯环己烷的博客 488

OpenCV实例(一)人脸检测

计算机视觉使很多任务成为现实,其中两项任务就是人脸检测(在图像中定位人脸)和人脸识别(将人脸识别为特定的人)。OpenCV实现了一些人脸检测和识别的算法。从安全到娱乐,这些技术在现实环境中都有应用。介绍OpenCV的一些人脸检测和识别功能,并定义特定类型的可跟踪物体的数据文件。具体来说,将研究Haar级联分类器,通过分析相邻图像区域之间的对比度,确定给定图像或子图像是否与已知类型匹配。

小幽余生不加糖 5004

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

程序员面试金典8.*

程序员面试金典8.*

pH2002的博客 594

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【程序员面试金典】01.07.旋转矩阵

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[],原地旋转输入矩阵,使其变为:[]

非止。的专栏 518

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

程序员面试金典(第六版)

从3月16日到8月2日,终于刷完了109题,因为之前的博客太多太分散,都整理在这里。

RayoNicks的博客 2948

程序员面试金典 - 面试题 17.26. 稀疏相似度

题目难度: 困难今天继续更新程序员面试金典系列, 大家在公众号里回复就能看到该系列当前连载的所有文章了, 记得关注哦~

随便发挥的博客 566

一个 3 年 Java 程序员 5 家大厂的面试总结(已拿Offer)

前言 16年毕业到现在也近三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中... 最终有幸去了网易。 但是要特别感谢点我达的领导及HR,真的非常非常好,很感谢他们一直的关照和指导。 面试整体事项 1、简历要准备好,联系方式一定要正确清晰醒目,项目经历按照时间倒序阐述,注意描述自己在项目中承担的职责,简历的模板尽量选择简洁的,毕竟程序员大部分还是喜欢简单明了的。 2、推荐boss直聘,我觉得很.

一入Java深似海 1183

【程序员面试金典】面试题 16.08. 整数的英语表示

【程序员面试金典】面试题 16.08. 整数的英语表示

❀雾里看花花里看雾❀ 327

php程序员需要会些什么问题,PHP程序员面试都会遇到哪些问题呢?

作为一位PHP程序员的话,不是那么简单的事,因此如果当你想要成为一名合格的PHP工程师的话,你就应该做好一切的准备,当然找好工作是前提,所以面试对我们来说是相当的重要的,因此你想要成为PHP程序员的话这些都是你必须要了解的!PHP程序员面试都会遇到哪些问题?1. Include 与 require之前的区别,require与require_once的效率哪个高?PHP在遇到include时就解释一...

weixin_30000735的博客 254

程序员面试必备性能优化核心方向 —— MySQL索引优化(技术+面试)!

MySQL索引优化的核心方向 MySQL索引优化是提升数据库查询性能的关键手段之一。以下是一些核心优化方向,既适用于实际开发,也适用于面试准备。 理解索引的基本原理 索引是数据库中用于加速数据检索的数据结构。常见的索引类型包括B-Tree索引、哈希索引、全文索引等。B-Tree索引是最常用的索引类型,适用于范围查询和排序操作。 CREATE INDEX idx_name ON table_name(column_name); 选择合适的索引列 选择索引列时,优先考虑高选择性的列,即该列的值具有较高的唯一性

马士兵教育 449

【面试总结】涵盖1-3年Java程序员必须精通的面试技巧

前言 金三银四,金九银十,大多数程序员都会选择在这两个时机跳槽(认为公司没发展,没有提升空间,对上级领导不满意的,薪资涨不了,忍了好长时间爆发的机会终于来了)同时也是求职者找工作的好机会。近期有很多朋友也问到了求职方面的问题,那么如何在面试中脱颖而出呢?这里针对1-3年Java开发面试经验做个总结,算是较常见的一些问题。不啰嗦了,直接上干货! 简历 简历的制作不可忽视, 毕竟能让hr中筛选一批人。首先个人的基本信息描述,在期望薪资方面,个人建议先写面议。然后该展示你的技能点及你擅长的领域,其次是你的项目经

Netty711的博客 332

【面试总结】涵盖1-3年Java程序员必须入手的面试技巧

前言 金三银四,金九银十,大多数程序员都会选择在这两个时机跳槽(认为公司没发展,没有提升空间,对上级领导不满意的,薪资涨不了,忍了好长时间爆发的机会终于来了)同时也是求职者找工作的好机会。近期有很多朋友也问到了求职方面的问题,那么如何在面试中脱颖而出呢?这里针对1-3年Java开发面试经验做个总结,算是较常见的一些问题。不啰嗦了,直接上干货! 简历 简历的制作不可忽视, 毕竟能让hr中筛选一批人。首先个人的基本信息描述,在期望薪资方面,个人建议先写面议。然后该展示你的技能点及你擅长的领域,其次是你的项目经

1179
上一篇: 程序员面试金典——9.2机器人走方格
下一篇: 程序员面试金典——9.4集合的子集
Allenlzcoder
博客等级 码龄10年 925粉丝 512原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值