LeetCode162 尋找峰值

2021-09-20 18:47:27 字數 913 閱讀 8312

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

給定乙個輸入陣列 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素並返回其索引。

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

你可以假設 nums[-1] = nums[n] = -∞。

示例 1:

輸入: nums = [1,2,3,1]

輸出: 2

解釋: 3 是峰值元素,你的函式應該返回其索引 2。

示例 2:

輸入: nums = [1,2,1,3,5,6,4]

輸出: 1 或 5

解釋: 你的函式可以返回索引 1,其峰值元素為 2;

或者返回索引 5, 其峰值元素為 6。

方法1:

暴力查詢。

遍歷列表中的元素,如果某個元素滿足左右兩邊的元素都小於該元素,就返回該元素的索引。此時應該注意列表兩端的點是沒有參與這個遍歷過程的,所以如果遍歷沒能找到符合要求的峰值,此時利用[0,n-1][nums[0]方法2:二分查詢

思路:已知陣列兩端的點可以認為是負無窮,所以峰值一定是存在的。

選定mid,判斷mid所在的點的趨勢是什麼,如果nums[mid]

class solution(object):

def findpeakelement(self, nums):

""":type nums: list[int]

:rtype: int

"""low = 0

high = len(nums)-1

while low!=high:

mid = (low+high)//2

if nums[mid]low = mid+1

else:

high = mid

return low

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 是峰值元素...

Leetcode 162 尋找峰值

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