标签:[] target snippet rac public href 有序 mat dmi
解决的办法仅仅能是对边缘移动一步。直到边缘和中间不在相等或者相遇,这就导致了会有不能切去一半的可能。所以最坏情况就会出现每次移动一步。总共移动n此。算法的时间复杂度变成O(n)。
代码例如以下:
public int findMin(int[] num) { if(num == null || num.length==0) return 0; int l = 0; int r = num.length-1; int min = num[0]; while(l<r-1) { int m = (l+r)/2; if(num[l]<num[m]) { min = Math.min(num[l],min); l = m+1; } else if(num[l]>num[m]) { min = Math.min(num[m],min); r = m-1; } else { l++; } } min = Math.min(num[r],min); min = Math.min(num[l],min); return min; }在面试中这种问题还是比較常见的,如今的趋势是面试官倾向于从一个问题出发。然后follow up问一些扩展的问题,并且这个题目涉及到了复杂度的改变,所以面试中确实是一个好题。自然也更有可能出现哈。
Find Minimum in Rotated Sorted Array II -- LeetCode
标签:[] target snippet rac public href 有序 mat dmi
原文地址:http://www.cnblogs.com/llguanli/p/7372773.html