剑指offer之 旋转数组的最小数字
package Problem8;
public class MinInReversingList {
/*
* 题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
* 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1;
*/
/**
* @param args
* @throws Exception
*/
public static int minElement(int array[]) throws Exception {
// 条件判断
if (array == null || array.length <= 0) {
throw new Exception("Invalid parameters");
}
int left = 0;
int right = array.length - 1;
int mid = left;
while (array[left] >= array[right]) {
// 跳出循环的条件
if (right - left == 1) {
mid = right;
break;
}
mid = (left + right) / 2;
if (array[left] == array[mid] && array[mid] == array[right]) {
return minFromSortSearch(array);
// 算法的核心思想
} else {
if (array[mid] >= array[left]) {
left = mid;
}
if (array[mid] <= array[right]) {
right = mid;
}
}
}
return array[right];
}
public static int minFromSortSearch(int[] array) {
int minEle = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] < minEle) {
minEle = array[i];
}
}
return minEle;
}
转载于:https://www.cnblogs.com/toov5/p/7654903.html
剑指offer之 旋转数组的最小数字相关推荐
- 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java
<LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...
- 剑指 Offer 11. 旋转数组的最小数字 简单
剑指 Offer 11. 旋转数组的最小数字 题目 解题思路 方法(一)直接遍历法 方法(二)二分查找法 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组 ...
- 剑指offer 11. 旋转数组的最小数字(很详细!)
剑指offer 11. 旋转数组的最小数字 题目 解题思路 代码 题目 解题思路 一开始,我们就能直接想到,数组找最小值,那么不轻轻松松直接遍历一遍,用一个变量记录最小值,然后直接返回不就完事了? 但 ...
- 【LeetCode】剑指 Offer 11. 旋转数组的最小数字
[LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...
- 【剑指 Offe】剑指 Offer 11. 旋转数组的最小数字
目录标题 算法汇总 题目 关键点 代码 1.解体方法 - 二分法 思路 代码 时间和空间复杂度 2.解题方法,如暴力法 思路 代码 时间和空间复杂度 算法汇总 以下是所有算法汇总,包括GitHub源码 ...
- 剑指Offer #06 旋转数组的最小数字(二分查找)| 图文详解
题目来源:牛客网-剑指Offer专题 题目地址:旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小 ...
- 剑指offer——11.旋转数组的最小数字
题目: 题1:实现快速排序 题2:年龄排序问题. 题3:旋转数组的最小数字 知识点: 快速排序算法,参考:https://blog.csdn.net/shujuelin/article/details ...
- 剑指offer:旋转数组的最小数字
题目 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的 ...
- 剑指offer——06旋转数组的最小数字(Python3)
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数 ...
- 剑指offer六:旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...
最新文章
- Opencv4.0运行yolov3
- python语言最适合的应用领域是_Python语言及其应用领域研究
- HDLBits 系列(12)All about Karnaugh Map
- javaweb:session
- WIN32开发:如何获取父进程的ID
- x86_64编译JPEG遇到Invalid configuration `x86_64-unknown-linux-gnu'
- java中能构成循环的语句_《编程导论(Java)#183;3.2.4 循环语句》
- JavaScript版代码执行
- 计算机专业基础 -- 数据结构入门与算法基础知识
- Java 7:最新特性更新、代码示例及性能测试
- 入门SpringBoot集成常用框架以及常见处理方式(括宽知识面)
- windows域环境搭建上
- python神经网络模型调用后预测值不变_用R语言实现神经网络预测股票实例
- 树莓派——槑槑智能音箱
- 图片轮播banner实现
- 工作前5年决定你一生的财富
- 一行代码获取android手机deviceId
- 用C语言解一元二次方程
- Win32应用程序开发:完整的开发流程
- 如何进行网站防篡改监控