七叶笔记 » golang编程 » Golang刷题 Leetcoede-33. Search in Rotated Sorted Array

Golang刷题 Leetcoede-33. Search in Rotated Sorted Array

题目:Search in Rotated Sorted Array

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

给一个排好序但是旋转过的数组,查找某个目标值的位置

例如

输入:[4,5,6,7,0,1,2],0

输出:4

思路

类似 二分查找 的思路,每次需要判断前进的方向

code

func search(nums []int, target int) int {
lo := 0
hi := len(nums) - 1
for lo < hi {
mid := (lo + hi) / 2
if nums[mid] == target {
return mid
}
if nums[lo] <= nums[mid] {
if target >= nums[lo] && target < nums[mid] {
hi = mid - 1
} else {
lo = mid + 1
}
} else {
if target > nums[mid] && target <= nums[hi] {
lo = mid + 1
} else {
hi = mid - 1
}
}
}
if nums[lo] == target {
return lo
} else {
return -1
}
}
 

更多内容请移步我的repo:

相关文章