数字在排序数组中出现的次数——剑指offer

书上写的是递归法,我的更喜欢循环写二分查找。 这道题给的有序数组第一思路是二分查找k,而后向两侧扫描找到起点终点,但这样时间复杂度是O (n). 巧妙地思路是两次二分查找,第一次找first第一次出现的下标,只须要把二分查找条件变一下就行了,第二次找last,最后返回last - first +1. 这里的陷阱是若是数组里没有这个数,就会返回1,把first设为-1若是没找到返回0.web int
相关文章
相关标签/搜索