该题目来源于牛客网《剑指offer》专题。

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。

例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

Go语言实现:

//顺序遍历
func minNumberInRotateArray(rotate []int) int {
length := len(rotate)
if length == 0 {
return 0
}
if length == 1 {
return rotate[0]
}
for i := 0; i < length-1; i++ {
//123旋转成的312
if rotate[i] > rotate[i+1] {
return rotate[i+1]
} else { //111 11旋转成的11 111
if i == length-2 {
return rotate[0]
}
}
}
return 0
}
//二分查找
func minNumberInRotateArray(rotate []int) int {
length := len(rotate)
if length == 0 {
return 0
}
if length == 1 {
return rotate[0]
}
low := 0
high := length - 1
for low < high {
mid := (low + high) / 2
//12345旋转成的34512
if rotate[mid] > rotate[high] {
low = mid + 1
}
//12222旋转成的22212
if rotate[mid] == rotate[high] {
high -= 1
}
//123456旋转成的51234
if rotate[mid] < rotate[high] {
high = mid
}
}
return rotate[low]
}

最新文章

  1. Python学习笔记 之 递归、二维数组顺时针旋转90&#176;、正则表达式
  2. Java Basic - Annotation
  3. Echarts的基本用法
  4. javaBean List Map json(转)
  5. Java原来如此-比较器(Comparable、Comparator)
  6. Leetcode#89 Gray Code
  7. 逐行读取txt
  8. struts2—拦截器
  9. [AngularJS] Using $parse Service
  10. 用javascirpt画个太极
  11. C#做的颜色工具
  12. iOS自定义字体及类目
  13. 专注手机端前端界面开发的ui组件和js组合
  14. SketchUp 建模练习(一)从图像建模运货木板 Pallet
  15. 读《赋能》有感zz
  16. 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)
  17. 『计算机视觉』Mask-RCNN_项目文档翻译
  18. PTA——输出各位数字
  19. 4:JavaScript中的对象
  20. linux find grep组合使用

热门文章

  1. 动态规划最短路径LintcodeNO110
  2. 基于Netty和SpringBoot实现一个轻量级RPC框架-Client篇
  3. matplotlib 条形图
  4. 异数OS 星星之火(三)--异数OS-织梦师云 微服务编写入门
  5. 针对MySQL的MVCC多版本并发控制的一些总结
  6. php变量中两种特殊类型
  7. python条件与循环-循环
  8. Dynamics CRM Package Deployer 部署工具
  9. Apache Commons 相关工具类使用
  10. 利用Python进行博客图片压缩