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 }