Find Min In Rotated Sorted Array,寻找反转序列中最小的元素。
问题描述:寻找反转序列中最小的元素。
算法分析:和寻找某个数是一个道理,还是利用二分查找,总体上分两种情况。nums[left]<=nums[mid],else。但是,在截取子序列的时候,有可能得到一个顺序序列。如34512,截取后得到12,此时要对这种情况判断,因为是顺序的,所以,最左边的元素就是最小元素。这点区别于寻找target,因为寻找target是根据target和left,mid,right做比较判断的。所以就不用对这种顺序情况单独讨论了。
public int findMin(int[] nums)
{
return findMin(nums, 0, nums.length - 1);
}
//递归
public int findMin(int[] nums, int left, int right)
{
if(left == right)
{
return nums[left];
}
if(nums[left] < nums[right])//例如34512,在截取子序列时候,很可能就得到一个顺序序列,这时候直接判断。
{
return nums[left];
}
int mid = (left+right)/2;
if(nums[left] < nums[mid])
{
return findMin(nums, mid+1, right);
}
else
{
return findMin(nums, left, mid);
}
} //迭代
public int findMin2(int[] nums, int left, int right)
{
while(left <= right)
{
if(nums[left] < nums[right])
{
return nums[left];
}
if(left == right)
{
return nums[left];
}
int mid = (left+right)/2;
if(nums[left] <= nums[mid])
{
left = mid + 1;
}
else
{
right = mid;
}
}
return -1;
}
Find Min In Rotated Sorted Array,寻找反转序列中最小的元素。的更多相关文章
- [LeetCode] Find Minimum in Rotated Sorted Array 寻找旋转有序数组的最小值
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- [LeetCode] 153. Find Minimum in Rotated Sorted Array 寻找旋转有序数组的最小值
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- LeetCode 153. Find Minimum in Rotated Sorted Array寻找旋转排序数组中的最小值 (C++)
题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...
- 【LeetCode】Find Minimum in Rotated Sorted Array 在旋转数组中找最小数
Add Date 2014-10-15 Find Minimum in Rotated Sorted Array Suppose a sorted array is rotated at some p ...
- Search in Rotated Sorted Array, 查找反转有序序列。利用二分查找的思想。反转序列。
问题描述:一个有序序列经过反转,得到一个新的序列,查找新序列的某个元素.12345->45123. 算法思想:利用二分查找的思想,都是把要找的目标元素限制在一个小范围的有序序列中.这个题和二分查 ...
- 26. Remove Duplicates from Sorted Array(删除排序数组中的重复元素,利用排序的特性,比较大小)
Given a sorted array, remove the duplicates in-place such that each element appear only once and r ...
- Leetcode153. Find Minimum in Rotated Sorted Array寻找旋转排序数组中最小值
假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 请找出其中最小的元素. 你可以假设数组中不存在重 ...
- Leetcode33--->Search in Rotated Sorted Array(在旋转数组中找出给定的target值的位置)
题目: 给定一个旋转数组,但是你不知道旋转位置,在旋转数组中找出给定target值出现的位置:你可以假设在数组中没有重复值出现 举例: (i.e., 0 1 2 4 5 6 7 might becom ...
- LeetCode#26 | Remove Duplicates from Sorted Array 删除有序数组中的重复元素
一.题目 Description Given a sorted array, remove the duplicates in-place such that each element appear ...
随机推荐
- cocos2d-X学习之主要类介绍:精灵角色(CCSprite)
CCSprite是一副2D图像,CCSprite可以通过图像或者图像中的一个矩形子区域创建 如果它的父节点或者任意继承树上的节点是CCspriteBatchNode则具有下述特性: 父节点是CCSpr ...
- 学习使用turtlebot2——turtlebot2上使用Hokuyo激光雷达(型号UST-10LX)
目标 在turtlebot2上添加Hokuyo激光雷达传感器,使用激光雷达调用gmapping进行建图. 配置情况 电脑使用Ubuntu 14.04版本,ROS为 Indigo,激光雷 ...
- 基于kubernetes集群的Vitess最佳实践
概要 本文主要说明基于kubernetes集群部署并使用Vitess; 本文假定用户已经具备了kubernetes集群使用环境,如果不具备请先参阅基于minikube的kubernetes集群搭建, ...
- 原!!junit mockito 自定义参数匹配 -- ArgumentMatcher
前两天写单元测试的时候,发现一个dao对象 mock成功了,但是调用该dao对象的某个方法时,并没有按照设定的值返回,而是返回null. 但是记得之前也都是这么写没有碰到问题,直接mock对象,调用方 ...
- golang的极简流式编程实现
传统的过程编码方式带来的弊端是显而易见,我们经常有这样的经验,一段时间不维护的代码或者别人的代码,突然拉回来看需要花费较长的时间,理解原来的思路,如果此时有个文档或者注释写的很好的话,可能花的时间会短 ...
- Linux环境配置全局jdk和局部jdk并生效
全局jdk配置: 1.root用户登录 2.进入opt目录,新建java文件夹 cd /opt mkdir java 上传jdk7u79linuxx64.tar.gz包到java文件夹并解压 jd ...
- NHibernate 配置增加代码感知
Adding the Schema Include the schema in your Project, Solution, or Visual Studios XML Schemas folder ...
- bootstrap datatable 参考文档
start:http://bootstrap-table.wenzhixin.net.cn/zh-cn/getting-started/ 扩展 http://issues.wenzhixin.net ...
- 103. Binary Tree Zigzag Level Order Traversal -----层序遍历
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left ...
- 8月白盒测试课程 - C C++ 白盒测试实践
8月白盒测试课程 - C C++ 白盒测试实践http://gdtesting.cn/news.php?id=36