[剑指offer]面试题第[6]题[JAVA][旋转数组的最小数字][二分法]
####【问题描述】
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{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][旋转数组的最小数字][二分法]相关推荐
- [剑指offer]面试题第[45]题[JAVA][把数组排成最小的数][快排][ Comparator][PriorityQueue]
[问题描述][中等] [解答思路] 1. 快速排序 时间复杂度:O(N^2) 空间复杂度:O(1) class Solution {public String minNumber(int[] nums ...
- [剑指offer]面试题第[53-2]题[JAVA][0-n-1中缺失的数字][二分法][暴力法]
[问题描述][简单] 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字.示例 1:输 ...
- [剑指offer]面试题第[59-2]题[JAVA][队列的最大值][暴力][双端队列]
[问题描述][中等] [解答思路] 1. 暴力 复杂度分析 class MaxQueue {Queue<Integer> queue = new LinkedList();int maxV ...
- [剑指offer]面试题第[47]题[JAVA][礼物的最大价值][动态规划]
[问题描述][中等] [解答思路] 1动态规划 动态规划流程 第 1 步:设计状态 f(i, j)f(i,j) 为从棋盘左上角走至单元格 (i ,j)(i,j) 的礼物最大累计价值 第 2 步:状态转 ...
- [剑指offer]面试题第[60]题[JAVA][n个骰子的点数][动态规划][空间优化]
[问题描述][中等] 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率.你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集 ...
- [剑指offer]面试题第[55-1]题[JAVA][二叉树的深度][BFS][DFS]
[问题描述][简单] 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度.例如:给定二叉树 [3,9,20,null,nul ...
- [剑指offer]面试题第[66]题[构建乘积数组][Leetcode][JAVA][第238题][除自身以外数组的乘积][数组]
[问题描述][中等] 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘 ...
- [剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]
[问题描述] 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- [剑指offer]面试题第[36]题[JAVA][二叉搜索树与双向链表][递归]
[问题描述][中等] [解答思路] 中序遍历 时间复杂度:O(N) 空间复杂度:O(N) class Solution {Node pre, head;public Node treeToDoubly ...
最新文章
- iOS开发之自定义弹出的键盘
- I00014 汉若塔问题的C++程序
- Docker系列三~docker安装nginx
- C/C++ 结构体成员在内存中的对齐规则(转载)
- Django单表,连表查询
- 复习:顺序表——链表
- ant vue 树形菜单横向显示_快速实现一个简单可复用可扩展的Vue树组件
- 无法推送到GitHub-一直说需要合并
- Java核心技术点之反射
- 电路设计中的防爆设计原理与注意事项分析
- tftp命令文件传输
- 51单片机流水灯方法大全
- Python-Data-Science-Toolbox-Part-1
- 未来智安XDR与中科方德高可信服务器操作系统完成产品兼容性互认证
- Linux7/Centos7磁盘分区、格式化及LVM管理
- 高等教育心理学:知识的学习
- 二叉树(Binary Tree):先序遍历、中序遍历、后序遍历和层次遍历
- 联想创投入围清科TOP VC 看好六大投资新领域
- 转型产业互联网,新氧能否再造辉煌?
- 人工智能时代将如何改变社会?