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

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

81.搜索旋转排序数组II

81.搜索旋转排序数组II

题解

在上一题的基础上去重即可

代码

package main
func search(nums []int, target int) bool {
  left, right := 0, len(nums)-1
  for left+1 < right {
    for left < right && nums[left] == nums[left+1] {
      left++
    }
    for left < right && nums[right] == nums[right-1] {
      right--
    }
    mid := left + (right-left)/2
    if nums[mid] == target {
      return true
    }
    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 || nums[right] == target {
    return true
  }
  return false
}
func main() {
}
目录
相关文章
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
94 4
|
算法 索引
LeetCode(搜索插入位置)
如何使用二分查找算法来解决LeetCode上的“搜索插入位置”问题,确保时间复杂度为O(log n),并提供了详细的代码实现和分析。
90 2
|
机器学习/深度学习
Leetcode第48题(旋转图像)
这篇文章介绍了LeetCode第48题“旋转图像”的解题方法,通过原地修改二维矩阵实现图像的顺时针旋转90度。
115 0
Leetcode第48题(旋转图像)
|
索引
Leetcode第三十三题(搜索旋转排序数组)
这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
103 0
Leetcode第三十三题(搜索旋转排序数组)
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
LeetCode第81题搜索旋转排序数组 II
文章讲解了LeetCode第81题"搜索旋转排序数组 II"的解法,通过二分查找算法并加入去重逻辑来解决在旋转且含有重复元素的数组中搜索特定值的问题。
LeetCode第81题搜索旋转排序数组 II
|
Go
Golang语言之数组(array)快速入门篇
这篇文章是关于Go语言中数组的详细教程,包括数组的定义、遍历、注意事项、多维数组的使用以及相关练习题。
311 5
【LeetCode 39】700.二叉搜索树中的搜索
【LeetCode 39】700.二叉搜索树中的搜索
84 0
LeetCode第74题搜索二维矩阵
文章讲解了LeetCode第74题"搜索二维矩阵"的解决方案,利用二分搜索法将问题简化,并通过数学转换找到二维矩阵中的对应元素,展示了将二维问题转化为一维问题的解题技巧。
LeetCode第74题搜索二维矩阵
|
存储 算法
LeetCode第48题旋转图像
LeetCode第48题"旋转图像"的解题方法,通过两次翻转操作——先水平翻转再对角线翻转,实现了原地旋转矩阵的效果。
LeetCode第48题旋转图像

热门文章

最新文章

推荐镜像

更多