Given an array of size n, find the majority element. The majority element is the element that appears more than ? n/2 ? times.
You may assume that the array is non-empty and the majority element always exist in the array.
寻找多数元素
就是某一个数组中的元素的个数是N ,这个N 大于 数组个数/2 取整的值就是多数元素。
下面是PHP的代码实现。
// array(1,2,3,2,5,69,8,2,5,2) // array(1,2,5,8,5,5,5,98,65,5,5) // array(1,2,6,8,6,6,6,98,65,6,6) echo majority(array(2,2,3,2,2,68,8,2,5,2)); function majority($n) { print_r($n);echo "<br />"; $elem = 0; $count = 0; // echo count($n);echo "<br />"; for($i = 0; $i<count($n); $i++) { if($count == 0) { $elem = $n[$i]; // print_r($elem);echo "<br />"; $count = 1; }else{ // print_r($n[$i]);echo "<br />"; if($n[$i] == $elem) { $count++; }else{ $count--; } } } if($count>0) <span style="white-space:pre"> </span>return $elem; <span style="white-space:pre"> </span>else <span style="white-space:pre"> </span>return "Don't have majority element<br />"; }
算法描述:
将计数器置为1,并把元素1保存下来,从元素2开始比对,逐个的比较元素。
如果被扫描的元素和保存下来的值(元素1)相等,计数器加一,不相等,减一。
所有的元素(从元素2到结尾)比较完成计数器大于0,则返回元素一,是多数元素。否则
把元素2存入临时变量,再比较元素3开始的整个数组。
这样依次比较完数组。
判断有无大数。
时间: 2024-11-06 07:30:44