当前位置:网站首页>剑指 Offer 11. 旋转数组的最小数字

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

2022-06-22 20:51:00 前端粉刷匠

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

这个问题就是简单的排序问题,在js中有很多排序的方法

方法1:sort排序

	function minArray(n){
    
		return n.sort((a,b)=> a - b )[0]
	}

方法2:Math.min排序

	function minArray(n){
    
		return Math.min(...n);
	}

方法3: 双指针
解析:从数组的两边向中间比较,找出数组中最小的那个

	function minArray(n) {
    
       let result = [0];
       		for (let i = 0; i < n.length; i++) {
    
       		result = Math.min(result,n[i],n[n.length - 1 - i])
       }
       return result
    }   

方法4:二分法
解析:通过比比较首尾两个数与中间的数的大小,然后循环比较,最终确定数组中的最小的数

	  function minArray(n) {
    
            let left = 0;
            let right = n.length - 1;
            while(left < right){
    
                let flag = Math.floor((left + right) / 2);
                console.log(flag)
                if(n[left] > n[flag]){
    
                    right = flag
                }else if(n[right] < n[flag]){
    
                    left = flag + 1;
                }else{
    
                    right --;
                }
            }
            return n[left];
        }  

原网站

版权声明
本文为[前端粉刷匠]所创,转载请带上原文链接,感谢
https://blog.csdn.net/sxm666666/article/details/108317330