一个php的面试题,大家看看
$listData = [
'111' => ['a', 'b', 'c', 'a'],
'222' => ['d', 'e', 'f', 'f', 'b'],
'333' => ['g', 'h'],
'444' => ['i', 'j'],
...
];
定义一个函数,传入$listData
如果111里面的元素,和 222/333/444... 里面的元素有重复,返回false
如果222里面的元素,和 111/333/444... 里面的元素有重复,返回false
如果333里面的元素,和 111/222/444... 里面的元素有重复,返回false
如果 ...
允许 111/222/333/444 自己里面的元素重复,返回true
其他情况返回true
已知:
$listData长度未知
111/222/333/444... 的长度未知
111/222/333/444... 里的元素为字符串和数字
我自己实现了一下,感觉算法很糟,请问有没有其他方法
function test ($array) {
$tempValueList = [];
foreach ($array as $key => $valueList) {
foreach ($valueList as $value) {
$tempValueList[] = $key . '~' . $value;
}
}
$result = true;
foreach ($array as $key => $valueList) {
foreach ($valueList as $value) {
foreach ($tempValueList as $_value) {
$pos = strpos($_value, '~');
$_key = substr($_value, 0, $pos);
$_val = substr($_value, $pos + 1);
if ($key == $_key) {
continue;
}
if ($_val == $value) {
$result = false;
break 3;
}
}
}
}
return $result;
}
相关阅读:
Python的元类, 你平时用的多吗? 怎么用的?
Tomcat deploy成功,但是start后项目无法启动,console和log均不报错?
关于获取元素宽度问题
node中如何在内存中生成一个文件上传到服务器?
关于html2canvas这个截图插件的问题
创建实例的构造函数中return 不同类型的值(对象),为什么会导致实例属性输出也不同?
元素的高度是怎么计算的?
android studio 能通过Clean和Rebuild,但在联手机测试时和Build apk时报错
python中,使用pip install PIL 出现问题could not find a version
跨域如何关闭iframe父窗口。
如何使用scroll.js使左右两栏都可以上下滑动,如图
php为什么运行了一段时间后才报内存溢出?
win10下cmd输出系统环境变量因为有空格而只显示空格前面的部分
docker不显示端口映射呢?
如何做一個完整的圓?裡面顯示數字
如何解决chrome中文字体无法正常显示?
linux 重新挂载目录
sysbench 测mutex具体原理是什么
redmin安装过过程中的坑,求填。
antd 的Input 组件如何取值