峰值元素是指其值大於左右相鄰值的元素。
給定乙個輸入陣列 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 是...