《剑指offer》第五十三题(数组中数值和下标相等的元素)
// 面试题53(三):数组中数值和下标相等的元素 // 题目:假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请编程实 // 现一个函数找出数组中任意一个数值等于其下标的元素。例如,在数组{-3, -1, // 1, 3, 5}中,数字3和它的下标相等。//思想:因为这里也是递增的,如果中间点的值大于下标,那后面所有值都会大于相应下标,同理中间点小于下标,前面都会小于下标 #include <iostream>int GetNumberSameAsIndex(const int* numbers, int length) {if (numbers == nullptr || length <= 0)return -1;int left = 0;int right = length - 1;while (left <= right){int middle = left + ((right - left) >> 1);if (numbers[middle] == middle)//第一种情况,中间点直接中了return middle;if (numbers[middle] > middle)//第二种情况,中间点值大于坐标,向左区间找right = middle - 1;else//第三种情况,中间点值小于坐标,向右区间找left = middle + 1;}return -1; }// ====================测试代码==================== void Test(const char* testName, int numbers[], int length, int expected) {if (GetNumberSameAsIndex(numbers, length) == expected)printf("%s passed.\n", testName);elseprintf("%s FAILED.\n", testName); }void Test1() {int numbers[] = { -3, -1, 1, 3, 5 };int expected = 3;Test("Test1", numbers, sizeof(numbers) / sizeof(int), expected); }void Test2() {int numbers[] = { 0, 1, 3, 5, 6 };int expected = 0;Test("Test2", numbers, sizeof(numbers) / sizeof(int), expected); }void Test3() {int numbers[] = { -1, 0, 1, 2, 4 };int expected = 4;Test("Test3", numbers, sizeof(numbers) / sizeof(int), expected); }void Test4() {int numbers[] = { -1, 0, 1, 2, 5 };int expected = -1;Test("Test4", numbers, sizeof(numbers) / sizeof(int), expected); }void Test5() {int numbers[] = { 0 };int expected = 0;Test("Test5", numbers, sizeof(numbers) / sizeof(int), expected); }void Test6() {int numbers[] = { 10 };int expected = -1;Test("Test6", numbers, sizeof(numbers) / sizeof(int), expected); }void Test7() {Test("Test7", nullptr, 0, -1); }int main(int argc, char* argv[]) {Test1();Test2();Test3();Test4();Test5();Test6();Test7();system("pause");return 0; }
转载于:https://www.cnblogs.com/CJT-blog/p/10538096.html
《剑指offer》第五十三题(数组中数值和下标相等的元素)相关推荐
- java中数组的下标比较_【Java】 剑指offer(53-3) 数组中数值和下标相等的元素
本文参考自<剑指offer>一书,代码采用Java语言. 题目 假设一个单调递增的数组里的每个元素都是整数并且是唯一的.请编程实现一个函数找出数组中任意一个数值等于其下标的元素.例如,在数 ...
- 【LeetCode】剑指 Offer 53 - I. 在排序数组中查找数字 I
[LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 文章目录 [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 一.二分法 总结 一.二分法 ...
- 剑指offer——面试题51:数组中重复的数字
剑指offer--面试题51:数组中重复的数字 Solution1: 20180910更新.利用数组做一次hash映射,时间复杂度为O(n)O(n)O(n),空间复杂度O(n)O(n)O(n). cl ...
- 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
剑指offer--面试题40:数组中只出现一次的数字 Solution1: 书中展示了很棒的思路: 关于异或的两个性质应该知道: (1) X^X = 0; (2) X^0 = X; class Sol ...
- 【重点】剑指offer——面试题36:数组中的逆序对
剑指offer--面试题36:数组中的逆序对 Solution1: 20180905整理 参考网址:https://www.nowcoder.com/profile/4474567/codeBookD ...
- 剑指offer——面试题29:数组中出现次数超过一半的数字
剑指offer--面试题29:数组中出现次数超过一半的数字 Solution1: 20180902日整理 注意几点: 1.若下一个数字和我们之前保存的数字相同,则次数 +1 2.若下一个数字和我们之前 ...
- C++版 - 剑指Offer 面试题36:数组中的逆序对及其变形(Leetcode 315. Count of Smaller Numbers After Self)题解
剑指Offer 面试题36:数组中的逆序对 题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 例如, 在数组{7,5, ...
- c++在数组中添加元素_39. 数组中数值和下标相等的元素
数组中数值和下标相等的元素 题目: 假设一个单调递增的数组里的每个元素都是整数并且是唯一的.请编程实现一个函数,找出数组中任意一个数值等于其下标的元素.例如,在数组{-3,-1,1,3,5}中,数字3 ...
- 【剑指offer题解】二维数组中的查找
前言 众所周知,对于面试而言,<剑指offer>是一本"好书". 如果你和我一样是个算法菜鸡,那么最推荐的是先把剑指offer的题目搞明白,其次再去刷LeetCode等 ...
最新文章
- 【连载】优秀程序员的 45 个习惯之习惯33
- 如何将C#nullable int转换为int
- ArcEngine的拓扑分析之ITopologicalOperator
- python 计量_距离度量以及python实现(二)
- python中xpath定位下拉菜单_Selenium2+Python3.6实战(八):定位下拉菜单出错,如何解决?用select或xpath定位。...
- python三方库打包项目中_将Python库打包到项目中
- es-03-DSL的简单使用
- \r \n \r\n的区别
- Atitit uke人才分类 杰出人才 高级人才、专业技术人才、技能人才 杰出人才移民共包含科技丶艺术丶工商丶运动及教育五大领域 杰出人才定义 编辑 联邦移民法规定「杰出能力」是指在科学丶艺
- 抖音直播电商带货项目商业运营计划书短视频创业规划方案
- 项目管理十大知识领域之项目风险管理
- 大牛书单 | C++ 好书推荐
- python三级联动菜单_Excel–这才是三级联动下拉菜单的正确做法
- Ambari2.7+HDP3.0安装(基于Centos7)
- 桌面内存管理器(dwn.exe)占用内存过高时怎么办?
- 精选了国内外 6 个接私活的网站,供大家赚钱!
- 肾有多好人就有多年青――男女通用
- xml中sql的大于号小于号处理
- 通向天才之路 : 实时环境映射贴图技术(Real-time Evironmnet Mapping)
- 移动互联网时代的四大特征
热门文章
- 每个java小应用程序都得继承,JAVA复习题3
- 结合反向传播算法使用python实现神经网络的ReLU、Sigmoid、Affine、Softmax-with-Loss层
- c++ 访问控制与封装
- (BFS)Dungeon Master(poj2251)
- python曲面图颜色渐变方向_matplotlib三维曲面的透明度和颜色渐变?
- python字符串用法_笔记:python字符串的使用
- curaengine linux编译,CuraEngine开源程序解读
- python序列类型包括字符串_python序列类型字符串列表元组
- python 2048源码_一个python的2048简单实现
- linux iso的引导文件,Linux_从硬盘启动Desktop ISO所需的引导文件,一、仅从硬盘启动Destdop ISO 并 - phpStudy...