golang力扣leetcode 154.寻找旋转排序数组中的最小值II

简介: golang力扣leetcode 154.寻找旋转排序数组中的最小值II

154.寻找旋转排序数组中的最小值II

154.寻找旋转排序数组中的最小值II

题解

这一题与上一题比较就多了一个条件,元素重复,那么元素重复,可能会出现下面两种情况

2222122

2212222

这么这个时候nums[mid]==nums[right],无法判断最小值在左区间还是右区间,这个时候,直接right–,因为既然nums[mid]==nums[right],就说明最后一位元素没用了,所以直接去掉即可

代码

package main
func findMin(nums []int) int {
  left, right := 0, len(nums)-1
  for left+1 < right {
    mid := left + (right-left)/2
    if nums[mid] > nums[right] {
      left = mid
    } else if nums[mid] < nums[right] {
      right = mid
    } else {
      right--
    }
  }
  if nums[left] < nums[right] {
    return nums[left]
  }
  return nums[right]
}
目录
相关文章
|
2月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
2月前
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
25 4
|
2月前
|
机器学习/深度学习
Leetcode第48题(旋转图像)
这篇文章介绍了LeetCode第48题“旋转图像”的解题方法,通过原地修改二维矩阵实现图像的顺时针旋转90度。
36 0
Leetcode第48题(旋转图像)
|
2月前
|
索引
Leetcode第三十三题(搜索旋转排序数组)
这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
25 0
Leetcode第三十三题(搜索旋转排序数组)
|
2月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
101 0
|
2月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
33 0
|
2月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
61 0
|
4月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
3月前
|
Go
Golang语言之数组(array)快速入门篇
这篇文章是关于Go语言中数组的详细教程,包括数组的定义、遍历、注意事项、多维数组的使用以及相关练习题。
52 5
|
4月前
|
存储 算法
LeetCode第48题旋转图像
LeetCode第48题"旋转图像"的解题方法,通过两次翻转操作——先水平翻转再对角线翻转,实现了原地旋转矩阵的效果。
LeetCode第48题旋转图像