一天一大 leet(魔术索引)难度:简单-Day20200731
时间:2022-07-25
本文章向大家介绍一天一大 leet(魔术索引)难度:简单-Day20200731,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目:
魔术索引。在数组 A[0…n-1]中,有所谓的魔术索引,满足条件 A[i] = i。 给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组 A 中找出一个魔术索引,如果没有,则返回-1。 若有多个魔术索引,返回索引值最小的一个。
示例:
1.示例 1
输入:nums = [0, 2, 3, 4, 5]
输出:0
说明: 0下标的元素为0
2.示例 2
输入:nums = [1, 1, 1]
输出:
提示:
nums 长度在[1, 1000000]之间
抛砖引玉
思路
- 一遍循环验证条件
- 通过则直接返回索引
/**
* @param {number[]} nums
* @return {number}
*/
var findMagicIndex = function (nums) {
for (let i = 0; i < nums.length; i++) {
if (i === nums[i]) return i
}
return -1
}
二分剪枝
二分法查找
- 开始-left:0
- 结束-right:0
- 每次量区间中点生成新的区间
- 两个区间索引交错及 left>right 是结束
- 生成新的区间同时验证两个区间点是否满足要求,如果满足则直接返回
/**
* @param {number[]} nums
* @return {number}
*/
var findMagicIndex = function (nums) {
function getAnswer(nums, left, right) {
if (left > right) return -1
let mid = parseInt((right - left) / 2, 10) + left
let leftAnswer = getAnswer(nums, left, mid - 1)
if (leftAnswer !== -1) {
return leftAnswer
} else if (nums[mid] === mid) {
return mid
}
return getAnswer(nums, mid + 1, right)
}
return getAnswer(nums, 0, nums.length - 1)
}
- 数据迁移前的准备和系统检查 (r2笔记70天)
- 数据处理的统计学习(scikit-learn教程)
- 机器学习实战,使用朴素贝叶斯来做情感分析
- Python NLTK 处理原始文本
- 通过闪回事务查看数据dml的情况 (r2笔记69天)
- 通过shell和sql结合查找性能sql(r2笔记68天)
- 淘宝的评论归纳是用什么方法做到的?
- Python的机器学习实战:AadBoost
- 通过shell检查分区表中是否含有默认分区(r2笔记87天)
- 利用python爬取人人贷网的数据
- 通过shell脚本查看package的信息(r2笔记86天)
- 通过shell脚本查看procedure的信息(r2笔记85天)
- 支持中文文本数据挖掘的开源项目PyMining
- 通过分区键值发现性能问题(r2笔记84天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法