coding - 递减数组左移后寻找某一个数
来源:互联网 发布:天猫化妆品销售数据 编辑:程序博客网 时间:2024/06/08 00:00
题目描述:
一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。
分析:
查找数第一反应是二分,而且该数组递减有序,不同的地方是左移了n位。
如果使用二分的话,得到的两个部分将会是这样:一部分递减有序,一部分非有序。
对有序部分可二分查找,对非有序部分,他是该题目的子问题,递归?当然可以。
实际上,利用迭代循环也可以解决。
通过判断array[0]与array[mid]即可判断出哪一部分是有序,
然后可判断num是在有序部分还是非有序部分,(通过if (num > array[mid] && num < array[ low ] ) )
反复调整指针low、high、和mid,即可找到num。
代码如下:
#include <iostream> using namespace std; int FindNumber(int arr[], int num, int low, int high) { if (arr == NULL) return -1; if (low > high) return -1; int mid = 0; while (low <= high) { mid = low + (high - low) / 2; if (arr[mid] == num) return mid; else {if (arr[low] >= arr[mid])//左边数组是单调递减数组 { if (num <= arr[low] && num > arr[mid])//要找的数在左边单调数组中 { high = mid - 1; } else//要找的数在右边非单调数组中 { low = mid + 1; } } else//右边数组是单调递减数组 { if (num >= arr[high] && num < arr[mid])//要找的数在右边单调数组中 { low = mid + 1; } else//要找的数在左边非单调数组中 { high = mid - 1; } } } } return -1; } //测试int main(int argc,char **argv) { int arr[] = {4, 3, 2, 1, 6, 5}; int len = sizeof(arr) / sizeof(*arr); int num = 1; int res = FindNumber(arr, num, 0, len - 1); cout << res << endl; return 0; }
- coding - 递减数组左移后寻找某一个数
- 两个递减数列中寻找某一个数
- 第四十八题(左移递减数组中查找某一个数)
- 左移递减数列查找某一个数
- 左移递减数列查找某一个数
- 48 一个数组是由一个递减数列左移若干位形成的,然后查找某一个数
- 写正确程序需要注意的地方:一个数组是有一个递减数列座椅若干位形成的,在这种数组中查找某一个数。
- 算法习题48:一个数组是由一个递减数列左移若干位形成的,在这种数组中查找某一个数。
- coding - 求数组的最长递减子序列
- 二维数组查找某一个数
- 寻找数组最大K个数
- 数组计数某一个数的数量
- 寻找递减最长路径
- 48.微软: 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5} 是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数
- 默认构造与特殊的成员变量之间的关系
- WORD 2010里无法使用输入法解决办法
- 三个简单排序算法的java实现
- Android(Java):ndk开发
- 原型模式
- coding - 递减数组左移后寻找某一个数
- alter table
- poj 1716
- URL 编码:CFURLCreateStringByAddingPercentEscapes
- Ubuntu linux-gcc安装与编译
- AMR-NB 与 AMR-WB 语音编码标准技术的对比研究
- 【转载】寻找真正的入口(OEP)--广义ESP定律
- drop 用法
- HDU-1396 神奇的三角形。坑!