专栏首页LeetCode解题33. 搜索旋转排序数组
原创

33. 搜索旋转排序数组

33. 搜索旋转排序数组

链接

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 0,1,2,4,5,6,7 可能变为 4,5,6,7,0,1,2 )。

搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。

你可以假设数组中不存在重复的元素。

你的算法时间复杂度必须是 O(log n) 级别。

示例1

输入: nums = [4,5,6,7,0,1,2], target = 0
输出: 4

示例2

输入: nums = [4,5,6,7,0,1,2], target = 3
输出: -1
func search(nums []int, target int) int {
	left := 0
	right := len(nums) - 1

	for left <= right {
		mid := (left + right) / 2

		if nums[mid] == target {
			return mid
		}

		// 判断是否在前半部分查找
		if (nums[left] <= target && target <= nums[mid]) || (nums[mid] <= nums[right] && (target < nums[mid] || target > nums[right])) {
			right = mid - 1
		} else {
			left = mid + 1
		}
	}

	return -1
}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 33. 搜索旋转排序数组

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    韩旭051
  • 33. 搜索旋转排序数组

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    lucifer210
  • leetcode-33-搜索旋转排序数组

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    chenjx85
  • LeetCode-33 搜索旋转排序数组

    ( 例如,数组 [0,1,2,4,5,6,7]可能变为 [4,5,6,7,0,1,2] )。

    用户3470542
  • LeetCode题目33:搜索旋转排序数组

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    二环宇少
  • 【刷穿 LeetCode】33. 搜索旋转排序数组(中等)

    例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] 。

    宫水三叶的刷题日记
  • ​LeetCode刷题实战33:搜索旋转排序数组

    https://www.cnblogs.com/techflow/p/12441002.html

    程序IT圈
  • LeetCode 33. 搜索旋转排序数组(二分查找)

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    Michael阿明
  • [Leetcode][python]搜索旋转排序数组/搜索旋转排序数组 II

    把一个严格升序的数组进行旋转,如[0,1,2,3,4,5]旋转3位成为[3,4,5,0,1,2]。在这样的数组中找到目标数字。如果存在返回下标,不存在返回-1。...

    后端技术漫谈

扫码关注云+社区

领取腾讯云代金券