바위타는 두루미
[leetcode]162. Find Peak Element 본문
162. Find Peak Element
A peak element is an element that is greater than its neighbors.
Given an input array nums, where nums[i] ≠ nums[i+1], find a peak element and return its index.
The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.
You may imagine that nums[-1] = nums[n] = -∞.
Example 1:
Input: nums = [1,2,3,1] Output: 2
Explanation: 3 is a peak element and your function should return the index number 2.
Example 2:
Input: nums = [1,2,1,3,5,6,4] Output: 1 or 5
Explanation: Your function can return either index number 1 where the peak element is 2, or index number 5 where the peak element is 6.
Note:
Your solution should be in logarithmic complexity.
solution 1
좌우 살피기 pick인지
souluton 2
사실 내려가는 점만 찾으면 됨
class Solution(object):
def findPeakElement(self, nums):
if len(nums) < 2: return 0
n = len(nums)
for i in range(n):
if i < n -1 and nums[i + 1] < nums[i]: return i
return n - 1
solution 3
logarithmic coplexity를 위한 이진탐색법
while <=잊지말기
class Solution(object):
def findPeakElement(self, nums):
len_nums = len(nums)
if len_nums <2:
return 0
if nums[0]>nums[1]:
return 0
if nums[-1]>nums[-2]:
return len_nums -1
l = 1
r = len_nums-2
while l <= r:
mid = (l+r)//2
if nums[mid] >= nums[mid-1] and nums[mid]>= nums[mid+1]:
return mid
if nums[mid-1] < nums[mid+1]:
l = mid+1
else :
r = mid-1
return -1
'Study > Algorithm' 카테고리의 다른 글
[leetcode] 56. Merge Intervals (0) | 2019.08.10 |
---|---|
[leetcode]34. Find First and Last Position of Element in Sorted Array (0) | 2019.08.10 |
[leetcode]347. Top K Frequent Elements (0) | 2019.08.10 |
[leetcode]347. Top K Frequent Elements (0) | 2019.08.10 |
[leetcode]75. Sort Colors (0) | 2019.08.10 |