####【问题描述】
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
####【解答思路】

1.使用-.sort()
public class Solution {public int minNumberInRotateArray(int [] array) {if (array.length == 0)return 0;Arrays.sort(array);return array[0];}
2.巧妙利用旋转特性
import java.util.ArrayList;
public class Solution {public int minNumberInRotateArray(int[] array) {if (array.length == 0)return 0;for (int i = 0; i < array.length - 1; i++) {if (array[i] > array[i + 1])return array[i + 1];}return array[0];} }
3.二分法 变种
import java.util.ArrayList;
public class Solution {public int minNumberInRotateArray(int [] array) {int low = 0 ; int high = array.length - 1;   while(low < high){int mid = low + (high - low) / 2;        if(array[mid] > array[high]){low = mid + 1;}else if(array[mid] == array[high]){high = high - 1;}else{high = mid;}   }return array[low];}}

【总结】

写一个好的二分法和灵活应用是件不容易的事情

[剑指offer]面试题第[6]题[JAVA][旋转数组的最小数字][二分法]相关推荐

  1. [剑指offer]面试题第[45]题[JAVA][把数组排成最小的数][快排][ Comparator][PriorityQueue]

    [问题描述][中等] [解答思路] 1. 快速排序 时间复杂度:O(N^2) 空间复杂度:O(1) class Solution {public String minNumber(int[] nums ...

  2. [剑指offer]面试题第[53-2]题[JAVA][0-n-1中缺失的数字][二分法][暴力法]

    [问题描述][简单] 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字.示例 1:输 ...

  3. [剑指offer]面试题第[59-2]题[JAVA][队列的最大值][暴力][双端队列]

    [问题描述][中等] [解答思路] 1. 暴力 复杂度分析 class MaxQueue {Queue<Integer> queue = new LinkedList();int maxV ...

  4. [剑指offer]面试题第[47]题[JAVA][礼物的最大价值][动态规划]

    [问题描述][中等] [解答思路] 1动态规划 动态规划流程 第 1 步:设计状态 f(i, j)f(i,j) 为从棋盘左上角走至单元格 (i ,j)(i,j) 的礼物最大累计价值 第 2 步:状态转 ...

  5. [剑指offer]面试题第[60]题[JAVA][n个骰子的点数][动态规划][空间优化]

    [问题描述][中等] 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率.你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集 ...

  6. [剑指offer]面试题第[55-1]题[JAVA][二叉树的深度][BFS][DFS]

    [问题描述][简单] 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度.例如:给定二叉树 [3,9,20,null,nul ...

  7. [剑指offer]面试题第[66]题[构建乘积数组][Leetcode][JAVA][第238题][除自身以外数组的乘积][数组]

    [问题描述][中等] 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘 ...

  8. [剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]

    [问题描述] 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  9. [剑指offer]面试题第[36]题[JAVA][二叉搜索树与双向链表][递归]

    [问题描述][中等] [解答思路] 中序遍历 时间复杂度:O(N) 空间复杂度:O(N) class Solution {Node pre, head;public Node treeToDoubly ...

最新文章

  1. iOS开发之自定义弹出的键盘
  2. I00014 汉若塔问题的C++程序
  3. Docker系列三~docker安装nginx
  4. C/C++ 结构体成员在内存中的对齐规则(转载)
  5. Django单表,连表查询
  6. 复习:顺序表——链表
  7. ant vue 树形菜单横向显示_快速实现一个简单可复用可扩展的Vue树组件
  8. 无法推送到GitHub-一直说需要合并
  9. Java核心技术点之反射
  10. 电路设计中的防爆设计原理与注意事项分析
  11. tftp命令文件传输
  12. 51单片机流水灯方法大全
  13. Python-Data-Science-Toolbox-Part-1
  14. 未来智安XDR与中科方德高可信服务器操作系统完成产品兼容性互认证
  15. Linux7/Centos7磁盘分区、格式化及LVM管理
  16. 高等教育心理学:知识的学习
  17. 二叉树(Binary Tree):先序遍历、中序遍历、后序遍历和层次遍历
  18. 联想创投入围清科TOP VC 看好六大投资新领域
  19. 转型产业互联网,新氧能否再造辉煌?
  20. 人工智能时代将如何改变社会?

热门文章

  1. vc的UI编程PngTextButton控件的适用情况
  2. Android 各控件的使用 - 按钮(Button)
  3. 重新设定mysql密码~,网上方法都是,这里选一个。
  4. AllTray-将办法最小化到琐细托盘
  5. 过滤JSON中的特殊字符
  6. 如何更sql sever数据库表的所有者
  7. 所谓语音合成 是计算机根据语言学,计算语言学完整1
  8. Android Splash闪屏页秒开 Activity白屏、Activity黑屏问题
  9. 启动马达接线实物图_星三角降压启动电路图实物接线图
  10. table合并单元格宽度自适应