欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

刷题记录(Find Peak Element Solution)

程序员文章站 2022-06-17 19:10:46
...

Leecode:Find Peak Element Solution(JS解题)

刷题记录(Find Peak Element Solution)
两种思路:一种是遍历,一种是二分法,讲下二分法的思路,找到中间节点位置mid,将位置mid和位置mid+1的两个数相比较,如果nums[mid] > nums[mid+1],说明一定有个峰值在左边,反之则一定有个峰值在右边。

上代码:
解法一:

function findPeakElement(nums: number[]): number {
   for(var i=1;i<nums.length;i++){
        if(nums[i] < nums[i-1]){
            return i-1;
        }
    }
    return nums.length-1;
};

解法二:

function findPeakElement(nums: number[]): number {
   if(nums.length < 2) return 0;
   return helper(nums,0,nums.length-1)
};

function helper(nums: number[],start:number,end:number){
    while(start < end){
        var mid1:number = Math.floor((start+end)/2);
        var mid2:number = mid1+1;
        if(nums[mid1] < nums[mid2]){
            start = mid2;
        }else{
            end = mid1;
        }
    }
    return start;   
}