多个数组同顺序对比取得与原所有数组最少重复的所有数字,并自动填充为出现的制定范围内的数字
时间: 2024-02-18 11:04:27 浏览: 35
可以通过以下步骤实现多个数组同顺序对比取得与原所有数组最少重复的所有数字:
1. 将所有数组合并成一个新的数组。
2. 对新数组进行排序。
3. 遍历新数组,记录每个数字出现的次数。
4. 遍历新数组,找到第一个出现次数为1的数字,作为最少重复的数字。
5. 如果没有出现次数为1的数字,则取出现次数最少的数字。
6. 如果最少重复的数字不在指定范围内,则填充为指定范围内第一个未出现的数字。
以下是示例代码:
```php
<?php
// 多个数组
$arr1 = array(1, 2, 3, 4, 5);
$arr2 = array(2, 3, 6, 7, 8);
$arr3 = array(3, 4, 5, 9, 10);
// 合并数组
$newArr = array_merge($arr1, $arr2, $arr3);
// 对数组进行排序
sort($newArr);
// 记录每个数字出现的次数
$countArr = array_count_values($newArr);
// 找到最少重复的数字
$leastRepeat = null;
foreach ($newArr as $num) {
if ($countArr[$num] == 1) {
$leastRepeat = $num;
break;
}
}
if ($leastRepeat === null) {
$minCount = null;
foreach ($countArr as $num => $count) {
if ($minCount === null || $count < $minCount) {
$leastRepeat = $num;
$minCount = $count;
}
}
}
// 如果最少重复的数字不在指定范围内,则填充为指定范围内第一个未出现的数字
$minNum = 1;
$maxNum = 10;
if ($leastRepeat < $minNum || $leastRepeat > $maxNum) {
for ($i = $minNum; $i <= $maxNum; $i++) {
if (!in_array($i, $newArr)) {
$leastRepeat = $i;
break;
}
}
}
echo $leastRepeat; // 输出最少重复的数字
?>
```
上述代码中假设指定范围为 1 到 10,最少重复的数字通过 $leastRepeat 变量返回。
阅读全文