数组中数值和下标相等的元素

题目:

假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请编程实现一个函数,找出数组中任意一个数值等于其下标的元素。例如,在数组{-3,-1,1,3,5}中,数字3和它的下标相等。

方法一:

从头到尾依次扫描数组中的数字,并逐一检验数字是不是和下标相等。时间复杂度为O(n)。

方法二:

由于数组是单调递增排序的,因此我们可以尝试二分查找算法来进行优化。假设我们某一步抵达数组中的第i个数字。如果我们很幸运,该数字的值刚好也是i,那么我们就找到了一个数字和其下标相等。

当数字的值和下标不相等的时候,假设数字的值为m。先考虑m大于i的情形,即数字的值大于它的下标。由于数组中的所有数字都唯一并且单调递增,那么对于任意大于0的k,位于下标i+k的数字的值大于或等于m+k。另外,因为m>i,所以m+k>i+k。因此,位于下标i+k的数字的值一定大于它的下标。这意味着如果第i个数字的值大于i,那么它的右边的数字都大于对应的下标,我们都可以忽略。下一轮查找只需要从它左边的数字中查找即可。

数字的值m小于它的下标i的情形和上面类似。它左边的所有数字的值都小于对应的下标,也可以忽略。

c++在数组中添加元素_39. 数组中数值和下标相等的元素相关推荐

  1. 《剑指offer》第五十三题(数组中数值和下标相等的元素)

    // 面试题53(三):数组中数值和下标相等的元素 // 题目:假设一个单调递增的数组里的每个元素都是整数并且是唯一的.请编程实 // 现一个函数找出数组中任意一个数值等于其下标的元素.例如,在数组{ ...

  2. java中数组的下标比较_【Java】 剑指offer(53-3) 数组中数值和下标相等的元素

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 假设一个单调递增的数组里的每个元素都是整数并且是唯一的.请编程实现一个函数找出数组中任意一个数值等于其下标的元素.例如,在数 ...

  3. java数组末尾添加元素_java数组添加元素,java数组如何添加一个元素

    java数组如何添加元素 向数组里添加一个元素怎么添加,这儿总结有三种方法: 1.一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度. 但有个可以改变大小的数组为ArrayLis ...

  4. js向对象中添加元素(对象,数组)

    一.添加一个元素 对象名["属性名"] = 值 (值:可以是一个值,可以是一个对象,也可以是一个数组) 这样添加进去的元素,就是一个值 或 对象 或 数组 var obj = {& ...

  5. Python剑指offer:数组中数值和下标相等的元素

    ''' 假设一个单调递增的数组里的每个元素都是整数并且是唯一的. 请编程实现一个函数找出数组中任意一个数值等于其下标的元素. 例如,在数组{-3, -1, 1, 3, 5}中,数字3和它的下标相等. ...

  6. java数组末尾添加元素_JavaScript 数组 Array对象增加和删除 元素

    pop 方法 移除数组中的最后一个元素并返回该元素. arrayObj.pop( ) 必选的 arrayObj 引用是一个 Array 对象. 说明 如果该数组为空,那么将返回 undefined. ...

  7. 39.数组中数值和下标相等的元素

    题目描述:   假设一个单调递增的数组里的每个元素都是整数且是唯一的,请编程实现一个函数,找出数组中任意一个数值等于其下标的元素,例如,在数组{-3,-1,1,3,5}中数字3和它的下标相同. 思路分 ...

  8. php 数组如何添加元素,php数组添加元素

    对于数组的操作上,无非就是增改删查, 那么最常见的莫过于数组数量的增加了.在学习了一些有关修改数组的函数后,本篇整理了三种在php中增加元素的方法,下面一起来看具体的介绍. 1.array_push( ...

  9. php中创建关联数组,以及遍历数组

    在这个地方我们将介绍在php中怎样来创建一个关联的数组,并且将数组进行遍历. <!DOCTYPE html> <html> <head> <title> ...

最新文章

  1. AutoCAD2012打开后一闪的解决方法
  2. iPhone Three20软件引擎之构建开发环境与HelloWorld
  3. ResourceBundle的路径问题
  4. 程序日志--要养成好习惯
  5. 基于pyQt的按键响应程序,实现按下按键进行图片曝光(按下按钮,运行另一个曝光图片程序.py)
  6. 图像直方图原理与Python实现
  7. 希尔排序 最坏时间_算法篇----希尔排序
  8. 2.2优化编译器的能力和局限性
  9. 实现图片抠图,拖拽验证功能
  10. Halcon教程第一讲 读取多张图片
  11. MySQL 8.0.29安装版安装教程
  12. 所谓神经网络是指以人脑和神经系统为模型的什么算法
  13. (1366, Incorrect string value: '\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...' for column '
  14. 【管理经验】管理的本质-激发善意
  15. 在Linux系统中的安装cpolar内网穿透
  16. Cloudflare发布全球最快的DNS
  17. 分享一个免费的OCR图片文字识别接口
  18. 问题“ConnectionString属性尚未初始化”之解决办法
  19. pacemaker+drbd主从
  20. 服务器及存储产品默认管理IP地址及用户名密码

热门文章

  1. 如何使柱状图左右展示_关于微生物门类堆叠柱状图,你知道的并不够
  2. linux 查找html文件,linux查找文件内容包含
  3. Atlassian JIRA 插件开发之三 创建
  4. Windows下基于IIS服务的SSL服务器的配置
  5. 在Win10中通过Google Chrome运行安卓应用
  6. 无法远程连接阿里云的Mysql
  7. linux常用文本编缉命令(strings/sed/awk/cut/uniq/sort)
  8. boost asio异步通信
  9. android 系统框架 dx
  10. 关于updatepanel回传之后JS失效问题