题目描述

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

题目分析

第一种方法:我们发现旋转数组在旋转后,有个分界点,而这个分界点就是最小的那个数。

第二种方法:分析第一种方法,我们发现时间复杂度为O(n),然而利用二分法的话,时间复杂度是可以做到O(logn)的,不过需要注意边界哦

代码

第一种:

function minNumberInRotateArray1(rotateArray) {
// write code here
if (rotateArray.length === 0) return 0;
for (let i = 0; i < rotateArray.length; i++) {
if (rotateArray[i] > rotateArray[i + 1]) return rotateArray[i + 1];
}
return rotateArray[0];
}

第二种:

function minNumberInRotateArray2(rotateArray) {
let left = 0,
right = rotateArray.length - 1;
while (right - left > 1) {
let mid = left + (right - left) >> 1;
mid = left + (right - left >> 1);
if (rotateArray[mid] > rotateArray[right]) {
left = mid;
} else {
right = mid;
}
}
return Math.min(rotateArray[left], rotateArray[right]);
}

最新文章

  1. SQLite剖析之编程接口详解
  2. Oracle的exp/imp详解
  3. Ubuntu15下mysql5.6.25解决不支持中文的办法
  4. 让FineUI数据绑定支持dynamic对象
  5. java获取获得Timestamp类型的当前系统时间。以及java.util.date 、java.sql.Date之间的转换
  6. 常州Day4题解
  7. 自用有线IP切换
  8. spring对事物的支持
  9. magento产品成功添加到购物车后跳转到不同页面 添加 add to cart 按钮
  10. highchars
  11. win10 删除资源管理器中的6个文件夹
  12. Codevs 1337 银行里的迷宫
  13. ASP.NET 导入EXCEL文档
  14. php什么是变量的数据类型
  15. JS获取table表格任意单元格值
  16. Jmeter自动化测试工具的简单使用--HTTP测试
  17. Java IO流之打印流与标准流
  18. 用Eclipse的snippets功能实现代码重用
  19. 深入理解Lambda函数及其用法
  20. webpack学习笔记 (三) webpack-dev-server插件和HotModuleReplacementPlugin插件使用

热门文章

  1. linux的基本操作(NFS服务配置)
  2. prometheus + grafana安装部署(centos6.8)
  3. 微信小程序时间戳的转换及调用
  4. ELK之使用heartbeat监控WEB站点
  5. Codeforces 584E - Anton and Ira - [贪心]
  6. 使用docker容器运行MySQL数据库并持久化数据文件
  7. day19:常用模块(collections,time,random,os,sys)
  8. [bash][awk] bash下使用awk方便的列求和
  9. JAVA可检测异常和非检测异常
  10. fat32转ntfs命令