【leetcode】Find Peak Element

Find Peak Element

A peak element is an element that is greater than its neighbors.

Given an input array where num[i] ≠ num[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 num[-1] = num[n] = -∞.

For example, in array [1, 2, 3, 1], 3 is a peak element and your function should return the index number 2.

Note:

Your solution should be in logarithmic complexity.

利用二分法才能达到logarithmic的复杂度

当num[mid]<num[mid+1]时,peek一定在右边

当num[mid]>num[mid+1]时,peek一定在左边

 1 class Solution {
 2
 3 public:
 4
 5     int findPeakElement(const vector<int> &num) {
 6
 7
 8
 9         int n=num.size();
10
11         int left=0;
12
13         int right=n-1;
14
15         int result;
16
17         int mid;
18
19         while(left<right)
20
21         {
22
23             mid=(left+right)/2;
24
25             if(mid+1>n-1)
26
27             {
28
29                 return mid;
30
31             }
32
33             if(num[mid]<num[mid+1])
34
35             {
36
37                 left=mid+1;
38
39             }
40
41             else if(num[mid]>num[mid+1])
42
43             {
44
45                 right=mid;
46
47             }
48
49         }
50
51
52
53         return left;
54
55     }
56
57 };
时间: 2024-12-28 19:28:25

【leetcode】Find Peak Element的相关文章

【LeetCode】Find Peak Element (3 solutions)

Find Peak Element A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ num[i+1], find a peak element and return its index. You may imagine that num[-1] = num[n] = -∞. For example, in array [1, 2, 3, 1],

【数组】Find Peak Element

题目: A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ num[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 i

【Leetcode】Kth Smallest Element in a Sorted Matrix

题目链接:https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/ 题目: Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix. Note that it is the kth smallest eleme

【leetcode】Kth Largest Element in an Array (middle)☆

Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element. For example,Given [3,2,1,5,6,4] and k = 2, return 5. 思路: 堆.讲解:二叉堆 class Solution { public: //新插入i结点 其父节点为(i

【LeetCode】169. Majority Element

题目: Given an array of size n, find the majority element. The majority element is the element that appears more than ? n/2 ? times. You may assume that the array is non-empty and the majority element always exist in the array. 题解: Solution 1 () class

【LeetCode】229. Majority Element II

Majority Element II Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space. Hint: How many majority elements could it possibly have? Do you have a better hint

【leetcode】Kth Largest Element in an Array

Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element. For example,Given [3,2,1,5,6,4] and k = 2, return 5. Note: You may assume k is always valid, 1 ≤ k ≤ array's

【LeetCode】169. Majority Element 解题小结

题目:Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times. You may assume that the array is non-empty and the majority element always exist in the array. Credits: 自己的思路大概是建立一个map,

【leetcode】961. N-Repeated Element in Size 2N Array

题目如下: In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeated N times. Return the element repeated N times. Example 1: Input: [1,2,3,3] Output: 3 Example 2: Input: [2,1,2,5,3,2] Output: 2 Example 3: Input