JavaScript题解剑指offer : 11. 旋转数组的最小数字

简介: JavaScript题解剑指offer : 11. 旋转数组的最小数字

九、剑指 Offer 11. 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。

leetcode-cn.com/problems/xu…

//二分查找,正确解
var minArray = function(numbers) {
    var nums=numbers
    var left = 0;
    var right = nums.length - 1;
    while (left < right) {
        var mid = Math.floor(left + (right - left) / 2)
        if (nums[mid] > nums[right]) {
            left = mid + 1;
        } else if (nums[mid] < nums[right]) {
            right = mid;
        } else {
            right--;//在数组中有重复数字的解决方法
        }
    }
    return nums[left];
};
第二种方法for循环遍历
//遍历:时间O(n)
var minArray = function(numbers) {
    for(var i =0;i<numbers.length;i++){
        if(numbers[i]<numbers[0]) // 一旦遇到比第一个数小的值就是最小值
        return numbers[i]; 
    }
    return numbers[0]; // 数组中的数全部相同或者未旋转
};

第三种方法先sort排序再返回最小数。

var minArray = function(numbers) {
    numbers.sort(compare);
    return numbers[0];
};
function compare (a,b) {
    return a-b;
}

目录
相关文章
|
21小时前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
23 3
|
21小时前
|
JavaScript
通过使用online表单的获取使用,了解vue.js数组的常用操作
通过使用online表单的获取使用,了解vue.js数组的常用操作
|
21小时前
|
存储 JavaScript 前端开发
深入了解JavaScript中的indexOf()方法:实现数组元素的搜索和索引获取
深入了解JavaScript中的indexOf()方法:实现数组元素的搜索和索引获取
8 0
|
21小时前
|
JavaScript 前端开发
js关于数组的方法
js关于数组的方法
11 0
|
21小时前
|
JavaScript 前端开发
js怎么清空数组?
js怎么清空数组?
14 0
|
21小时前
|
存储 JavaScript 前端开发
js处理数组的方法
js处理数组的方法
14 2
|
21小时前
|
JavaScript 前端开发 索引
JavaScript 数组的索引方法数组转换为字符串方法
JavaScript 数组的索引方法数组转换为字符串方法
|
21小时前
|
JavaScript 前端开发
JavaScript 数组的添加删除和排序
JavaScript 数组的添加删除和排序
|
21小时前
|
JavaScript 前端开发
js 操作数组的方法
js 操作数组的方法
22 4
|
21小时前
|
JavaScript 前端开发
js数组过滤,从简单到多条!
js数组过滤,从简单到多条!