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之间
  • 此题为原书中的 Follow-up,即数组中可能包含重复元素的版本

  点击此处跳转题目

二、C# 题解

  依次遍历,但是进行剪枝:如果当前值大于索引,则跳转到当前值的索引位置。

csharp 复制代码
public class Solution {
    public int FindMagicIndex(int[] nums) {
        if (nums[0] > nums.Length || nums[^1] < 0) return -1;
        int i = 0;
        while (i < nums.Length) {
            if (nums[i] == i) return i;   // 找到魔术索引,立即返回
            if (nums[i] > i) i = nums[i]; // 如果当前值大于索引,则跳转到当前值的索引位置
            else i++;                     // 否则,继续判断下一个位置
        }
        return -1;
    }
}
  • 时间:88 ms,击败 81.82% 使用 C# 的用户
  • 内存:41.7 MB,击败 72.73% 使用 C# 的用户
相关推荐
2601_962218614 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
吞下星星的少年·-·4 小时前
The 2026 ICPC Asia East Continent Online Contest (II)(构造)
数据结构·算法
stolentime5 小时前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法
和裕6 小时前
蜂窝板 vs 七层瓦楞重型纸箱:大件工业设备运输性能与成本全对比
大数据·运维·网络·人工智能·算法
衡石科技7 小时前
Data_Agent记忆机制与经验复用衡石分析智能体会话记忆与长期学习技术解析
人工智能·科技·学习·算法·企业级bi
shirsl8 小时前
算法 Day 2 滑动窗口 + 栈 / 单调栈
开发语言·python·算法
土司大王9 小时前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树
2601_962218619 小时前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
那年窗外下的雪.9 小时前
AIDC 学习日志|第 22 天|All-Active/Single-Active 故障演练设计
服务器·网络·学习·算法·哈希算法
wzdark10 小时前
基于启发式搜索的最优路径规划算法研究4
算法