// 思路
//先给数组排序、检查数组中是否有2个值相等的,如果有则直接不是;
//判断数组中 0 的个数 数组中两个值之间比较的差值相加 <= 0的个数,否则补数不够
$arr = array(1, 0, 0, 1, 0);
if(count($arr) < 5) {
echo ‘arr not five’;exit;
}
// 先进行排序
sort($arr);
$zeronum = 0;
//判断数组中是否有2个值相等的
for ($i=0; $i <count($arr) ; $i++)
{
// 最后一个不做比较,否则数组溢出
if($i>=4) {
continue;
}
if($arr[$i] == $arr[$i + 1] && $arr[$i] >0 ) {
echo ‘has equal value’;exit;
}
// 统计 0 的个数 – 这个是可以补数组中空缺的数组
if($arr[$i] == 0) {
$zeronum ++ ;
}
}
// 非0数字直接需要补的数值 有 几个 比如 0 0 1 3 4
// 需要补充的是 1 3 之间的 一个 2
$totaldfval = 0;
// 循环数组比较里面的差值
for ($j=$zeronum; $j <count($arr);$j++ ) {
// 比较 2个值 之间是否是连续的,如果是连续的 则 数据相减 等于0
if($j>=4) {
continue;
}
$diffval = $arr[$j + 1] - $arr[$j] - 1;
$totaldfval += $diffval;
}
if($totaldfval > $zeronum) {
echo ‘num not lx’;exit();
}
echo ‘num lx’;
exit;