咸阳市网站建设_网站建设公司_定制开发_seo优化
2025/12/31 15:26:15 网站建设 项目流程

题目:

思路:

  1. 数组分为左升序段右升序段,最小值是右段的第一个元素;
  2. 若数组未旋转(整体升序),最小值是第一个元素;
  3. 二分关键:比较nums[mid]nums[r](右边界),判断最小值在左 / 右区间:
    • nums[mid] > nums[r]:最小值在mid右侧(l=mid+1);
    • nums[mid] < nums[r]:最小值在mid左侧(含 mid,r=mid);
    • nums[mid] == nums[r]:无法判断,缩小右边界(r-=1)。

代码:

from typing import List class Solution: def findMin(self, nums: List[int]) -> int: l, r = 0, len(nums) - 1 # 二分查找:最终l=r时就是最小值 while l < r: mid = l + (r - l) // 2 # 避免溢出 if nums[mid] > nums[r]: # 最小值在mid右侧 l = mid + 1 elif nums[mid] < nums[r]: # 最小值在mid左侧(含mid) r = mid else: # 相等时缩小右边界(避免漏最小值) r -= 1 return nums[l]

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询