【发布时间】:2016-09-11 05:49:30
【问题描述】:
在 N 个数组中,如果一个数字可以被数组中的至少一个其他数字整除,那么它就是 X 数。程序找出给定数组中有多少这样的数字
示例 1:在数组 [1,2,3] 中,x 数为 2(2 和 3,因为它们可以被数字 1 整除)
示例 2:在数组 [2,3,5,8] 中,x 数为 1(8 可被 2 整除)
示例 3:在数组 [2,3,6,12] 中,x 数为 2(6 可被 2 和 3 整除,12 可被 2 和 3 和 6 整除)
我正在使用下面的代码,但如果数组大小增加性能不应该妨碍,我想以某种方式对其进行优化:
$arr = array(2,3,6,12);
$count = 0;
function check_special_num($tnum, $tarr){
sort($tarr);
for($i=0;$i<sizeof($tarr);$i++){
if( $tnum % $tarr[$i] == 0 ){
return true;
}
}
return false;
}
for($i=0;$i<sizeof($arr);$i++){
$temp = $arr;
$num = $arr[$i];
array_splice($temp, $i, 1);
if( check_special_num( $num, $temp ) ){
$count += 1;
}
}
echo $count;
编码语言是PHP
【问题讨论】:
-
请解释你的逻辑。 array_splice 有什么用?
-
array_splice 是 php 中的一个内置函数,该函数从输入数组中删除由 offset 和 length 指定的元素,并用替换数组的元素(如果提供)替换它们。它返回一个包含提取元素的数组。
-
例如 array_splice( array(1,2,3), 0, 1 ) 将返回 array( 2,3 ) ,它将从数组中删除第 0 个索引为 1 并返回 array( 2 ,3)
标签: php arrays optimization