时间:2021-07-01 10:21:17 帮助过:6人阅读
题目
统计一个数字在排序数组中出现的次数。
题解
既然是排序数组,使用二分查找是效率最高的。找到之后再向两侧拓展一下。
代码
<?php function GetNumberOfK($data, $k) { if(count($data)==0){ return 0; } $index = 0; $low = 0; $high = count($data)-1; $middle = 0; //二分查找找到k的index while($low<=$high){ $middle = ($high+$low)>>1; if($data[$middle]==$k){ $index = $middle; break; } else if($data[$middle]>$k) { $high = $middle -1; }else{ $low = $middle+1; } $index = -1; } // console.log(index); // 如果没找到 if($index==-1){ return 0; } //找到了 分别往左右查找边界 $start = $index; $end = $index; $count = 0; while($data[$start]==$k){ $count++; $start--; } while($data[$end]==$k){ $count++; $end++; } return $count-1; }
相关推荐:
用户自定义排序数组有关问题
在排序数组中,找出给定数字的出现次数.比如 [1, 2, 2, 2, 3] 中
根据某一个键值重新排序数组
以上就是PHP统计一个数字在排序数组中出现的次数的详细内容,更多请关注Gxl网其它相关文章!