17.搜索旋转排序数组-二分查找法

思路

二分查找法

20220304

容易遗漏等于好,确认好有三个小于等于号,一个大于等于号,在最后面

package main

// @solution-sync:begin
func search(nums []int, target int) int {
	l, r := 0, len(nums)-1

	for l <= r {
		m := l + (r-l)/2
		if nums[m] == target {
			return m
		}
		if nums[l] <= nums[m] {
			if nums[l] <= target && nums[m] > target {
				r = m - 1
			} else {
				l = m + 1
			}
		} else {
			if nums[m] < target && nums[r] >= target {
				l = m + 1
			} else {
				r = m - 1
			}
		}
		
	}
	return -1
}

Last updated