Go语言实现:【剑指offer】旋转数组的最小数字
2024-09-06 18:23:29
该题目来源于牛客网《剑指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]
}
最新文章
- Python学习笔记 之 递归、二维数组顺时针旋转90&#176;、正则表达式
- Java Basic - Annotation
- Echarts的基本用法
- javaBean List Map json(转)
- Java原来如此-比较器(Comparable、Comparator)
- Leetcode#89 Gray Code
- 逐行读取txt
- struts2—拦截器
- [AngularJS] Using $parse Service
- 用javascirpt画个太极
- C#做的颜色工具
- iOS自定义字体及类目
- 专注手机端前端界面开发的ui组件和js组合
- SketchUp 建模练习(一)从图像建模运货木板 Pallet
- 读《赋能》有感zz
- 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)
- 『计算机视觉』Mask-RCNN_项目文档翻译
- PTA——输出各位数字
- 4:JavaScript中的对象
- linux find grep组合使用