您的位置 首页 golang

Golang刷题Leetcode 81. Search in Rotated Sorted Array II

题目:Search in Rotated Sorted Array II

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

(i.e., [0,0,1,2,2,5,6] might become [2,5,6,0,0,1,2]).

You are given a target value to search. If found in the array return true, otherwise return false.

给一个排序但是旋转过的数组,搜索某个元素

思路

依然可以用 二分查找 ,注意到每个点的时候,都要判断方向

code

func search(nums []int, target int) bool {
	l := len(nums)
	if l == 0 {
		return false
	}
	left,  right  := 0, l-1
	for left <= right {
		mid := left + (right-left)/2
		if nums[mid] == target {
			return true
		} else if nums[mid] < nums[right] {
			if nums[mid] < target && nums[right] >= target {
				left = mid + 1
			} else {
				right = mid - 1
			}
		} else if nums[mid] > nums[right] {
			if nums[left] <= target && nums[mid] > target {
				right = mid - 1
			} else {
				left = mid + 1
			}
		} else {
			right--
		}
	}
	return false
}
 

更多内容请移步我的repo:

文章来源:智云一二三科技

文章标题:Golang刷题Leetcode 81. Search in Rotated Sorted Array II

文章地址:https://www.zhihuclub.com/97221.shtml

关于作者: 智云科技

热门文章

网站地图