| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | package mainfunc searchOld(nums []int, target int) int {	for i, v := range nums {		if v == target {			return i		}	}	return -1}func search(nums []int, target int) int {	beg, end := 0, len(nums)-1	mid := -1	// find the smallest one in nums	for beg < end {		mid = (beg + end) / 2		if nums[mid] > nums[end] {			beg = mid + 1		} else {			end = mid		}	}	if mid == -1 || target == nums[mid] {		return mid	}	// judge which area to search	if target > nums[len(nums)-1] {		beg, end = 0, mid-1	} else {		beg, end = mid+1, len(nums)-1	}	// binary search	for beg <= end {		mid = (beg + end) / 2		if target > nums[mid] {			beg = mid + 1		} else if target < nums[mid] {			end = mid - 1		} else {			return mid		}	}	return -1}/* func main() {	a1 := []int{4, 5, 6, 0, 1, 2, 3}	a2 := []int{1, 3}	fmt.Println(search(a1, 6))	fmt.Println(search(a2, 3))} */
 |