题目

假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。

你需要找到其中最小的元素。

数组中可能存在重复的元素。

样例 给出[4,4,5,6,7,0,1,2] 返回 0

分析

这次可以出现重复元素,很简单,只要判断的时候加等于的判断即可,如果mid等于end,那么end--最小值肯定还在其中。

代码

public class Solution {/*** @param num: a rotated sorted array* @return: the minimum number in the array*/public int findMin(int[] nums) {// write your code hereif (nums == null || nums.length == 0) {return -1;}int start = 0, end = nums.length - 1;while (start + 1 < end) {int mid = start + (end - start) / 2;if(nums[mid]>nums[start] && nums[mid] < nums[end])return nums[0];else if (nums[mid] == nums[end]) {// if mid equals to end, that means it's fine to remove end// the smallest element won't be removedend--;} else if (nums[mid] < nums[end]) {end = mid;// of course you can merge == & <} else {start = mid;// or start = mid + 1}}if (nums[start] <= nums[end]) {return nums[start];}return nums[end];}
}
复制代码

LintCode 寻找旋转排序数组中的最小值 II相关推荐

  1. LeetCode 154. 寻找旋转排序数组中的最小值 II (二分)

    154. 寻找旋转排序数组中的最小值 II 题意 给定一个包含重复元素的升序旋转数组 找出旋转数组的最小值 二分法 class Solution {public int findMin(int[] n ...

  2. leetcode 154. 寻找旋转排序数组中的最小值 II(二分查找)

    已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 ...

  3. LeetCode 154 寻找旋转排序数组中的最小值 II

    题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转.( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ).请找出其中最小的元素.注意数组中可能存在重 ...

  4. 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值II”的求解思路与算法示例

    一.题目要求 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次旋转后,得到输入数组.例如,原数组 nums = [0, 1, 4, 4, 5, 6, 7] 在变化后可能得到: 若旋转 ...

  5. [leetcode] 154.寻找旋转排序数组中的最小值 II

    已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 ...

  6. 154. 寻找旋转排序数组中的最小值 II(有手就行)

    class Solution {public int findMin(int[] nums) {for(int i=0;i<nums.length;i++){if(nums[i]<nums ...

  7. 算法-------寻找旋转排序数组中的最小值

    题目 寻找旋转排序数组中的最小值假设按照升序排序的数组在预先未知的某个点上进行了旋转.( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ).请找出其中最小的元素 ...

  8. python 寻找旋转排序数组中的最小值

    | 寻找旋转排序数组中的最小值 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到 ...

  9. 153. 寻找旋转排序数组中的最小值 golang

    153. 寻找旋转排序数组中的最小值 golang Me func findMin(nums []int) int {if len(nums) < 2 {return nums[0]}i, j ...

  10. LeetCode 153. 寻找旋转排序数组中的最小值(二分)

    153. 寻找旋转排序数组中的最小值 题意 给定一个无重复元素的升序旋转数组 找出旋转数组的最小值 二分法 mid是向下取整:left相对于mid移动 只要中值小于nums[right],说明最小值一 ...

最新文章

  1. 公元2019年,你对AI的信任有几分?
  2. 甲骨文第四财季SAAS和PAAS收入增长66%
  3. 演练 创建数据库MySchool 1007 sqlserver
  4. css 盒模型 0302
  5. 2017.9.23 循环格 思考记录
  6. ae缺少效果opticalflares_新版镜头光晕插件来袭,Optical Flares 1.3.5 for Win/Mac,含注册机...
  7. 深入理解strcpy,strncpy
  8. 按照是否执行程序分类
  9. HCIA网工数通Datacom之网工初级
  10. Java:如何选择一个好的Java外包合作伙伴?
  11. 树的递归与非递归遍历算法
  12. imac打开terminal终端器
  13. 线性表顺序存储的一些操作(初始化,添加,删除)
  14. MySQL中删除重复数据只保留一条
  15. Java Entry类详解
  16. android 8 zuk,联想开推ZUI3.5大版本更新:ZUK手机怒升安卓8.0!
  17. 开普互联心系农民 服务三农
  18. 使命召唤手游如何在电脑上玩 使命召唤手游模拟器教程
  19. 豆芽儿 - 高端IT人才成长社区 上线啦!
  20. 基于开源产品的sftp Cluster 集群方案

热门文章

  1. [转]用C++实现插件体系结构
  2. OpenNETCF Smart Device Framework 2.1 发布
  3. CoreData学习-最好的一片文章
  4. [label][paypal] Paypal 支付页面的语言显示问题
  5. 第五话 Asp.Net MVC 3.0【MVC实战项目の一】
  6. sqlserver shiwu
  7. 第1章 神经网络的思想
  8. 人工智能-机器学习之seaborn(读取xlsx文件,小提琴图)
  9. 宽字节UTF-8、多字节互转
  10. Linux内存管理 (6)vmalloc