剑指Offer06 旋转数组的最小值
/*************************************************************************
> File Name: 06_MinNumberInRotatedArray.c
> Author: Juntaran
> Mail: JuntaranMail@gmail.com
> Created Time: 2016年08月29日 星期一 20时14分22秒
************************************************************************/ #include <stdio.h>
#include <stdlib.h> // O(n)解法
int minNumberInRotatedArray1(int* rotatedArray, int length)
{
if (length <= )
return ; for (int i = ; i < length; ++i)
{
if ( rotatedArray[i] < rotatedArray[i-])
return rotatedArray[i];
}
return rotatedArray[];
} // O(log(n))解法
int minNumberInRotatedArray2(int* rotatedArray, int length)
{
if (length <= )
return ;
if (length == )
return rotatedArray[];
int left = ;
int right = length - ;
int middle = ; if (rotatedArray[left] < rotatedArray[right])
return rotatedArray[]; while (rotatedArray[left] >= rotatedArray[right])
{
if (right - left == )
{
middle = right;
break;
}
middle = (left + right) / ; // 如果left、right、middle的值相同,只能顺序查找
if (rotatedArray[left]==rotatedArray[middle]
&& rotatedArray[middle]==rotatedArray[right])
{
for (int i = left+; i < right; ++i)
{
if (rotatedArray[i] < rotatedArray[i-])
return rotatedArray[i];
}
return rotatedArray[left];
} if (rotatedArray[middle] >= rotatedArray[left])
left = middle;
else if (rotatedArray[middle] <= rotatedArray[right])
right = middle;
}
return rotatedArray[middle];
} int main()
{
int rotatedArray1[] = {,,,,,,};
int rotatedArray2[] = {,,,,,,};
int rotatedArray3[] = {,,,,,,};
int rotatedArray4[] = {,,,,,,,,,}; int length1 = ;
int length2 = ; int ret1, ret2; ret1 = minNumberInRotatedArray1(rotatedArray1, length1);
ret2 = minNumberInRotatedArray2(rotatedArray1, length1);
printf("ret1 is %d, ret2 is %d\n", ret1, ret2);
ret1 = minNumberInRotatedArray1(rotatedArray2, length1);
ret2 = minNumberInRotatedArray2(rotatedArray2, length1);
printf("ret1 is %d, ret2 is %d\n", ret1, ret2);
ret1 = minNumberInRotatedArray1(rotatedArray3, length1);
ret2 = minNumberInRotatedArray2(rotatedArray3, length1);
printf("ret1 is %d, ret2 is %d\n", ret1, ret2);
ret1 = minNumberInRotatedArray1(rotatedArray4, length2);
ret2 = minNumberInRotatedArray2(rotatedArray4, length2);
printf("ret1 is %d, ret2 is %d\n", ret1, ret2); return ;
}
剑指Offer06 旋转数组的最小值的更多相关文章
- 剑指Offer 旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 ...
- 剑指offer 旋转数组
class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { //常规的遍历方法时间是O(N ...
- 剑指Offer——旋转数组的最小数字
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一 ...
- 剑指offer-7.旋转数组的最小数字
看起来不需要用二分法查找 --------------------------------------------------------- 时间限制:3秒 空间限制:32768K 热度指数:5098 ...
- 剑指Offer-6.旋转数组的最小数字(C++/Java)
题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...
- 用js刷剑指offer(旋转数组的最小数字)
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...
- 剑指offer6:旋转数组的最小数字
1. 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一 ...
- 剑指Offer_11_旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出一个旋转数组的最小元素. 例如: {3,4,5,1,2} 为 {1,2,3,4,5} ...
- 剑指offer8 旋转数组的最小数字
一种错误写法: class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { int len ...
随机推荐
- Mahout之Navie Bayesian命令端运行
landen@landen-Lenovo:~/文档/20news$ mahout trainclassifier --helpMAHOUT_LOCAL is not set; adding HADOO ...
- Python常用网页字符串处理技巧
首先一些Python字符串处理的简易常用的用法.其他的以后用到再补充. 1.去掉重复空格 s = "hello hello hello" s = ' '.join(s.split( ...
- Instant Buy Android API Tutorial
转自:https://developers.google.com/wallet/instant-buy/android/tutorial This tutorial guides you throug ...
- cocos2d制作动态光晕效果基础——blendFunc
转自:http://www.2cto.com/kf/201207/144191.html 最近的项目要求动态光晕的效果. 何谓动态光晕?之前不知道别人怎么称呼这个效果, 不过在我看来,“动态光晕”这个 ...
- Slony-I的限制
限制如下: http://slony.info/documentation/limitations.html Slony-I does not automatically replicate •Cha ...
- PL/pgSQL函数带output参数例子
例子1,不带returns : [postgres@cnrd56 bin]$ ./psql psql () Type "help" for help. postgres=# CRE ...
- PL/pgSQL学习笔记之五
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 39.3. 声明 块中使用的所有的变量必须在块的声明节中进行声明 ...
- plupload上传控件错误exec(this.uid, component, action, args)
plupload上传控件错误exec(this.uid, component, action, args) --undefined is not a function 原因:Flash元素隐藏后调用控 ...
- jQuery Mobile与QUI框架的异曲同工之处
最近一直在研究jQuery Mobile框架,这是jQuery的官方移动版UI框架,专门用来开发手机与平板电脑方面的应用.结果越来越觉得它和我的QUI框架的开发思路非常相似,很多地方都有异曲同工之妙. ...
- codeforces 377A. Puzzles 水题
A. Puzzles Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/33 ...