字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
来源:互联网 发布:淘宝客公司怎么样 编辑:程序博客网 时间:2024/06/05 17:28
问题:
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
Find the minimum element.
You may assume no duplicate exists in the array.
思路一:忽略了数组有序的先验信息,直接对数组进行遍历比较,找到最小值,在没有对复杂度进行特殊要求时可以直接使用,简单粗暴。
class Solution { public int findMin(int[] nums) { //顺序查找 int len = nums.length; int minIndex = 0; for(int i = 1;i<len;i++){ if(nums[minIndex]>nums[i]){ minIndex = i; } } return nums[minIndex]; }}
思路二:利用数组是有序然后旋转的先验信息,可以知道旋转后的数组在某一索引的两侧一定是一侧有序,一侧无序,对于有序一侧可以使用二分查找算法。
class Solution { public int findMin(int[] nums) { //二分查找 int len = nums.length; if(len == 0)return -1;//数组长度为零 if(nums[0]<nums[len-1]){//长度为1 return nums[0]; } int left = 0; int right = len-1; return dfs(nums,left,right);//二分递归查找 } private int dfs(int[]nums,int left,int right){ int min = (left + right)/2;//中间索引值 if(left==right){ return nums[left]; } if(nums[right]>nums[min]){//最小值落在左侧 return dfs(nums,left,min); }else {//最小值落在右侧 return dfs(nums,min+1,right); } }}
阅读全文
0 0
- 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
- 字符串算法——查找有序数组旋转后最小值(有重复元素)(Find Minimum in Rotated Sorted Array II)
- Array----- 153. Find Minimum in Rotated Sorted Array(查找旋转后的有序数组中最小值)
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array (查找旋转有序数组中的最小值)
- Find Minimum in Rotated Sorted Array 2 寻找旋转有序数组的最小值之二
- [Java语言] [Leetcode] Find Minimum in Rotated Sorted Array 找旋转有序数组的最小值
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array II(查找旋转有序数组中的最小值 - 二)
- Find Minimum in Rotated Sorted Array II 旋转数组中找最小值(有重复元素) @LeetCode
- Find Minimum in Rotated Sorted Array (旋转数组最小值)
- 字符串算法——旋转数组中查找目标值(有重复元素)( Search in Rotated Sorted Array II)
- 寻找循环有序数组的最小值 Find Minimum in Rotated Sorted Array
- [leetcode 153]Find Minimum in Rotated Sorted Array----求旋转数组的最小值
- LeetCode-153:Find Minimum in Rotated Sorted Array (可能旋转的排序数组中的最小值) -- medium
- 154.leetcode Find Minimum in Rotated Sorted Array II(hard)[排序数组 重复元素 二分查找]
- Leetcode|Find Minimum in Rotated Sorted Array II(有重复元素的二分查找)
- 数组-Find Minimum in Rotated Sorted Array(旋转数组求最小值)
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- 【LintCode】 Find Minimum in Rotated Sorted Array 寻找旋转排序数组中的最小值
- 编程的圣经-设计原则
- 用Kotlin和Anko实现安卓UI(一)
- angularjs+生成随机数猜数字大小
- 实验三 栈和队列的基本操作实现及其应用
- sizeof(i++),sizeof(fun())
- 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
- 日常小BUG小记
- Mangeto批量修改价格:把price的值赋值给special price
- Xception: Deep Learning with Depthwise Separable Convolutions个人理解
- 用Kotlin和Anko实现安卓UI(二)
- Git----版本控制系统安装及使用
- 【C#学习笔记】 使用C#中的Dispatcher
- onclick事件打开窗口
- C++运算符重载详解