LCR 128. 库存管理 I
仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id,可能存在重复。原库存表按商品 id 升序排列。现因突发情况需要进行商品紧急调拨,管理员将这批商品 id 提前依次整理至库存表最后。请你找到并返回库存表中编号的 最小的元素 以便及时记录本次调拨。
示例 1:
**输入:**stock = [4,5,8,3,4]
**输出:**3
示例 2:
**输入:**stock = [5,7,9,1,2]
**输出:**1
提示:
1 <= stock.length <= 5000
-5000 <= stock[i] <= 5000
已排序数组,寻找旋转点;
题目需要最小的元素,将数组从旋转点分为左右两部分,右部分元素小于左部分任何一个元素,可知最小值一定在右部分存在(没有旋转默认为右部分)
所以考虑比较stock[mid]与stock[right]
stock[mid]>stock[right]:mid处于左部分
stock[mid]<stock[right]:mid处于右部分
stock[mid]==stock[right]:无法判断,但是r可以-1来缩小范围,如果r处于最小值因为stock[mid]==stock[right]所以最后仍可以找到,如果增大left的话,left处于最小值则会直接剔除
假如比较stock[left]会出现,当stock[mid]>stock[left]时,如果数组没有旋转无法判断mid处于哪一部分
1 | class Solution { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.




