leetcode 162 尋找峰值

2021-09-25 17:55:00 字數 1003 閱讀 5119

峰值元素是指其值大於左右相鄰值的元素。

給定乙個輸入陣列 nums,其中 num

s[i]

≠num

s[i+

1]

nums[i] \neq nums[i+1]

nums[i

]̸​=

nums

[i+1

],找到峰值元素並返回其索引,假設 num

s[−1

]=nu

ms[n

]=−∞

nums[-1] = nums[n] = -\infty

nums[−

1]=n

ums[

n]=−

∞。陣列可能包含多個峰值,在這種情況下,返回任何乙個峰值所在位置即可。

本題目屬於比較難的二分演算法的應用,這種題目雖然沒有二段性質,但是可以使用二分思想進行解題。

本題目假定 num

s[−1

]=nu

ms[n

]=−∞

nums[-1] = nums[n] = -\infty

nums[−

1]=n

ums[

n]=−

∞,那麼容易得知,一定存在峰值元素 (因為兩邊都是負無窮,其中定有元素值大於左右相鄰元素)。

根據此理,可以得到如下推論:假定 num

s[mi

d]

>nu

ms[m

id+1

]nums[mid] > nums[mid + 1]

nums[m

id]>nu

ms[m

id+1

],那麼 [l,

mid]

[l,mid]

[l,mid

] 區間範圍內一定存在乙個峰值元素。

int findpeakelement(vector& nums) 

else

}return l;

}

LeetCode 162 尋找峰值

題目描述 峰值元素是指其值大於左右相鄰值的元素。給定乙個輸入陣列nums,其中nums i nums i 1 找到峰值元素並返回其索引。陣列可能包含多個峰值,在這種情況下,返回任何乙個峰值所在位置即可。你可以假設nums 1 nums n 示例 輸入 nums 1,2,3,1 輸出 2 解釋 3 是...

LeetCode 162 尋找峰值

峰值元素是指其值大於左右相鄰值的元素。給定乙個輸入陣列nums,其中nums i nums i 1 找到峰值元素並返回其索引。陣列可能包含多個峰值,在這種情況下,返回任何乙個峰值所在位置即可。你可以假設nums 1 nums n 示例 1 輸入 nums 1,2,3,1 輸出 2解釋 3 是峰值元素...

LeetCode162 尋找峰值

峰值元素是指其值大於左右相鄰值的元素。給定乙個輸入陣列 nums,其中 nums i nums i 1 找到峰值元素並返回其索引。陣列可能包含多個峰值,在這種情況下,返回任何乙個峰值所在位置即可。你可以假設 nums 1 nums n 示例 1 輸入 nums 1,2,3,1 輸出 2 解釋 3 是...