剑指offer---统计一个数字在排序数组中出现的次数。(PHP)
2018-01-23 14:54
459 查看
思路1:一般的遍历,比较有没有相等的,有就自动+1;
思路2:利用二分法,将相等的数先找到,记录下标。然后遍历一下从0到改下标和从该下标到头总共多少相等的,记录。
$n = count($data); $low = 0;$high = $n -1; if($k == null || $data[0]>$k||$data[$high] < $k) return 0; while($high >= $low){ $mid = $low + floor(($high - $low)/2); if($data[$mid] > $k){ $high = $mid-1; }elseif($data[$mid] < $k){ $low = $mid+1; }else{ $high = $mid; $low = $mid; break; } } $num = 0; while($low<$n&&$data[$low+1] == $k){ $low ++; $num ++; } while($hight>=0&&$data[$high] == $k){ $high --; $num ++; } return $num;
相关文章推荐
- 剑指offer-统计一个数字在排序数组中出现的次数-PHP
- 剑指offer-38 统计一个数字在排序数组中出现的次数
- 【剑指offer】统计一个数字在排序数组中出现的次数
- 【剑指Offer-知识迁移能力】统计一个数字在排序数组中出现的次数。
- PHP实现统计一个数字在排序数组中出现次数的方法
- 剑指offer38 数字在排序数组中出现的次数
- 【剑指offer】数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数(二分法)
- 统计一个数字在排序数组中出现的次数。
- 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
- 剑指offer:数字在排序数组中出现的次数
- 剑指offer第三十四题【数字在排序数组中出现的次数】c++实现
- 剑指offer 面试题38 数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数(二分法)
- 剑指Offer面试题:32.数字在排序数组中出现的次数
- 一个一维整形数组,若干个数字,统计数组中不同的数字出现的次数,并按照出现频率从小到大排序输出,相同频率按数字大小排序输出
- 《牛客网剑指offer37题》统计一个数字在排序数组中出现的次数
- 剑指offer——面试题38:数字在排序数组中出现的次数
- 剑指offer--数字在排序数组中出现的次数