golang力扣leetcode 33.搜索旋转排序数组

简介: golang力扣leetcode 33.搜索旋转排序数组

33.搜索旋转排序数组

33.搜索旋转排序数组

题解

代码

package main
func search(nums []int, target int) int {
  left, right := 0, len(nums)-1
  for left+1 < right {
    mid := left + (right-left)/2
    if nums[mid] == target {
      return mid
    }
    if nums[left] < nums[mid] { //[left,mid]
      if nums[left] <= target && target < nums[mid] {
        right = mid
      } else {
        left = mid
      }
    } else if nums[mid] < nums[right]{ //[mid,right]
      if nums[mid] < target && target <= nums[right] {
        left = mid
      } else {
        right = mid
      }
    }
  }
  if nums[left] == target {
    return left
  } else if nums[right] == target {
    return right
  }
  return -1
}
目录
相关文章
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
94 4
|
算法 索引
LeetCode(搜索插入位置)
如何使用二分查找算法来解决LeetCode上的“搜索插入位置”问题,确保时间复杂度为O(log n),并提供了详细的代码实现和分析。
90 2
|
索引
Leetcode第三十三题(搜索旋转排序数组)
这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
103 0
Leetcode第三十三题(搜索旋转排序数组)
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
LeetCode第81题搜索旋转排序数组 II
文章讲解了LeetCode第81题"搜索旋转排序数组 II"的解法,通过二分查找算法并加入去重逻辑来解决在旋转且含有重复元素的数组中搜索特定值的问题。
LeetCode第81题搜索旋转排序数组 II
【LeetCode 39】700.二叉搜索树中的搜索
【LeetCode 39】700.二叉搜索树中的搜索
84 0
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
247 0
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
86 0
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
155 0
LeetCode第74题搜索二维矩阵
文章讲解了LeetCode第74题"搜索二维矩阵"的解决方案,利用二分搜索法将问题简化,并通过数学转换找到二维矩阵中的对应元素,展示了将二维问题转化为一维问题的解题技巧。
LeetCode第74题搜索二维矩阵

热门文章

最新文章

推荐镜像

更多