一周刷爆LeetCode,算法大神左神(左程云)耗時(shí)100天打造算法與數(shù)據(jù)結(jié)構(gòu)基

public class 局部最小值 { /* * 二分 先比較兩端是否存在局部最小如果沒有 則二分 判斷mid的左右兩個(gè)數(shù)是否大于mid * */ public static void main(String[] args) { int[] arr={10,4,12,5,11,8,4,9}; // 兩端存在則直接輸出 if(arr[0]<arr[1]) System.out.println(arr[0]); if(arr[arr.length-1]< arr[arr.length-2]) System.out.println(arr[arr.length-1]); // 二分 int left=1; int right=arr.length-2; int mid; while(left<=right){ mid=left+((right-left)/2); if(arr[mid]>arr[mid-1]){ right=mid-1; }else if(arr[mid]>arr[mid+1]){ left=mid+1; }else{ System.out.println(arr[mid]); break; } } } }
標(biāo)簽: