把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。

示例 1:

输入:[3,4,5,1,2]
输出:1
示例 2:

输入:[2,2,2,0,1]
输出:0

思路:二分查找,注意有重复值,所以当right与mid对应的值相同是,需要执行right--

代码:

class Solution {

public int minArray(int[] nums) {

if(nums.length==0)

{

return 0;

}

int left=0,right=nums.length-1;

int mid=0;

while(left<right)

{

mid = left+(right-left)/2;

if(nums[mid]<nums[right])

{

right = mid;

}

else  if(nums[mid]>nums[right])

{

left = mid+1;

}

else{

right--;

}

}

return nums[right];

}

}

【剑指offer】面试题11:旋转数组的最小数字(java)相关推荐

  1. 剑指Offer - 面试题11. 旋转数组的最小数字(二分查找)

    1. 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] ...

  2. 剑指offer面试题11. 旋转数组的最小数字(二分查找)

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的 ...

  3. 剑指offer面试题[8]-旋转数组的最小数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...

  4. 剑指offer(12)旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组 ...

  5. 剑指offe面试题8 旋转数组的最小数字 (java实现)

    解题思路: 针对旋转数组的特点,即旋转后,数组的前半部分是有序的,后半部分是有序的. 1.先考虑一般情况:可以参考二分查找的思想,在数组中设置两个指针,一个指向数组的起始位置,一个指向数组的结束位置. ...

  6. 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java

    <LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...

  7. 剑指offer:面试题11. 旋转数组的最小数字

    题目:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2, ...

  8. j剑指offer面试题[33]-把数组排成最小的数

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路: 可以 ...

  9. 面试题11. 旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...

  10. 剑指Offer - 面试题45. 把数组排成最小的数(字符串排序)

    1. 题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102"示例 2: 输入: [ ...

最新文章

  1. Gitlab Issue Tracker and Wiki(一)
  2. Linux shell脚本判断服务器网络是否可以上网
  3. validating和validated的区别
  4. 长此以往的发展,以BCH为代表的数字货币终将会为自己正名
  5. MyBatis 的执行流程,写得太好了!
  6. [leetcode笔记] Remove Duplicates from Sorted List II
  7. 【Git】Git 标签使用 ( 创建并查询标签 | 推送单个标签到远程仓库 | 推送所有标签到远程仓库 | 删除远程仓库的标签 )
  8. Eclipse、NetBeans、IntelliJ集成开发工具 Java IDE
  9. 批处理文件将多台连接的手机安装同一个APP
  10. 如何保障一场千万级大型直播?
  11. 二叉树分析(两点最大距离)
  12. 《Spark核心技术与高级应用》——3.2节构建Spark的开发环境
  13. Spring bean作用范围
  14. 开源编辑器Makedown的安装
  15. html5 职工入职后台管理系统_丽水微信社群裂变营销管理系统公司
  16. matlab中的低通freqs,matlab数字低通滤波器 MATLAB一阶低通滤波器的设计
  17. 逻辑函数(表示方法、形式转换、化简、最小项、最大项)
  18. img标签src引入svg如何修改颜色
  19. ai cs6和ps cs6 破解
  20. python自学笔记(一)

热门文章

  1. 程序员面试金典 - 面试题 16.05. 阶乘尾数(5的因子)
  2. POJ 3122 分披萨(二分查找)
  3. 在android添加数据采集,一种基于Android系统的地理信息数据采集方法与流程
  4. python书籍_Python书籍大汇总——入门到实战
  5. linux futex 进程同步,Linux的新式线程同步原语——Futex
  6. mysql复制表结构和数据
  7. 别只关注GPT3!细如发丝的模型更具现实杀伤力!
  8. Android Binder漏洞挖掘技术与案例分享
  9. 论文浅尝 - ACL2022 | 面向推理阅读理解的神经符号方法
  10. tensorflow--GPU