《剑指Offer》之面试题旋转数组的最小数字
来源:互联网 发布:其怒乎的其是什么意思 编辑:程序博客网 时间:2024/05/16 02:49
把数组最开始的若干元素搬到数组的末尾,我们称之为数组的旋转,输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素,例如{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.int Min(int *number, int len){if (number += NULL || len <= 0){throw exception("Invaild input!");}int index1, index2;index1 = 0;//指向数组第一个元素index2 = len - 1;//指向数组最后一个元素int indexMid = index1;//当数组没有反转时也就是翻转的元素个数为0,则第一个元素最小直接返回第一个元素;while (number[index1] > number[index2]){if (index2-index1==1)//当两个指针的间隔是1时,中间数指定为index2;{indexMid = index2;break;}if (number[index1]==number[index2]&&number[index1]==number[indexMid])//如果第一个元素和最后一个元素以及中间数相等的情况时无法判断,则只能用顺序查找{return MinInOrder(number, index1, index2);}indexMid = (index2 + index1) / 2;if (number[indexMid]>=number[index1])//中间数大于index1指的元素时,说明中间数属于前一个子数组则index1指向indexMid{index1 = indexMid;}if (number[indexMid]<=number[index2])//中间数小于index1指的元素时,说明中间数属于后一个子数组则index1指向indexMid{index2 = indexMid;}}}int MinInOrder(int *numbers, int index1, int index2)//顺序查找{int result = numbers[index1];for (int i = index1 + 1; i < index2; ++i){if (result>numbers[i]){result = numbers[i];}}return result;}
0 0
- 《剑指Offer》之面试题旋转数组的最小数字
- 【剑指offer】面试题8:旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 剑指Offer:面试题8 :旋转数组的最小数字
- 《剑指offer》面试题8旋转数组的最小数字
- 《剑指Offer》面试题8:旋转数组的最小数字
- 【剑指offer】 面试题8: 旋转数组的最小数字
- 《剑指Offer》面试题:旋转数组的最小数字
- 剑指offer面试题八:旋转数组的最小数字
- 旋转数组的最小数字(剑指offer面试题)
- 剑指offer-面试题8:旋转数组的最小数字
- 剑指offer-面试题8.旋转数组的最小数字
- 剑指offer面试题 旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 【剑指offer】面试题8:旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 剑指offer--面试题8: 旋转数组的最小数字
- 剑指Offer---面试题8:旋转数组的最小数字
- ios 如何将图片保存至自定义分组
- zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器
- poj-2484
- Ubuntu 下配置OTL 链接MySQL
- PIN插装~linux下无法识别程序内部定义例程解决方法
- 《剑指Offer》之面试题旋转数组的最小数字
- 简单猜数游戏
- javascript运算符
- Java中的两个类:Desktop和SystemTray
- jira 6.0.3 破解 && 汉化(反编译实例讲解)
- iframe父窗体和子窗体的相互调用
- poj-2348
- python算法之二分查找
- TCP/IP各层网络协议的通俗理解