对大小为n的数组执行左旋转操作会将数组元素的每个元素向左移动1个单位。例如,如果在数组[1,2,3,4,5]上执行2个左旋转,则该数组将变为[3,4,1,2,3]。 我正试图找到解决以下问题的最有效方法。第一行包含两个空格分隔的整数,表示n(整数数)和d(您必须执行的左旋转数)的相应值。 第二行包含n个空格分隔的整数,用于描述数组初始状态的各个元素。PHP数组 - 优化
例输入:
5 4
1 2 3 4 5
输出示例:
5 1 2 3 4
在大多数情况下,我下面的代码工作得很好,但在执行时间方面,似乎有一定的提升空间 - 由于Timeout的原因,它目前正在通过非常大的输入文件(见下文)进行一次测试。
我的问题是,可以做些什么来减少下面的一段代码的执行时间?
<?php
$file = file_get_contents ("php://stdin","r");
$file = explode("\n",$file);
$meta = explode(" ", $file[0]);
$rotations = $meta[1];
$nums = explode(" ", $file[1]);
while($rotations > 0) {
$removed = array_shift($nums);
$nums[] = $removed;
--$rotations;
}
echo implode(" ", $nums);
?>
输入文件过大
其中提出的解决方案是对你比较? – CodeCaster
哪个建议由谁提出?你是指你以前的任何问题吗?你想问我们什么,“为我优化这个代码”? – CodeCaster
@CodeCaster,见编辑。 – AnchovyLegend