162. Find Peak Element

https://leetcode.com/problems/find-peak-element/discuss/50232/Find-the-maximum-by-binary-search-(recursion-and-iteration)

 

 1 class Solution {
 2     public int findPeakElement(int[] nums) {
 3         int lo = 0, hi = nums.length - 1;
 4         while(lo <= hi){
 5             if(lo == hi){
 6                 return lo;
 7             }
 8             int mid1 = lo + (hi-lo) / 2;
 9             int mid2 = mid1 + 1;
10             if(nums[mid1] > nums[mid2]){
11                 hi = mid1;
12             }else{
13                 lo = mid2;
14             }
15         }
16         return -1;
17         
18     }
19 }
20 
21 
22 //O(n)
23 class Solution {
24     public int findPeakElement(int[] nums) {
25         long[] arr = new long[nums.length + 2];
26         arr[0] = (long)Integer.MIN_VALUE-1;
27         arr[arr.length - 1] = (long)Integer.MIN_VALUE-1;
28         for(int i = 0; i < nums.length; i++){
29             arr[i+1] = nums[i];
30         }
31         for(int i = 1; i < arr.length - 1; i++){
32             if(arr[i] > arr[i-1] && arr[i] > arr[i+1]){
33                 return i-1;
34             }
35         }
36         return -1;
37         
38     }
39 }

 

posted @ 2018-10-28 11:06  jasoncool1  阅读(96)  评论(0编辑  收藏  举报