旋转列表

Vid*_*dya -4 php algorithm

如何旋转列表

例如.

$arr = array(a,b,c,d,e,f,g);
Run Code Online (Sandbox Code Playgroud)

现在旋转指数是3.列表应从d开始旋转.最终的清单应该是

d e f g a b c
Run Code Online (Sandbox Code Playgroud)

有谁能建议解决这个问题?我不想使用内置函数,这应该在现场完成.

zer*_*kms 12

$arr = array('a','b','c','d','e','f','g'); 
$i = 3;
$arr2 = array_merge(array_slice($arr, $i), array_slice($arr, 0, $i));

var_dump($arr2);
Run Code Online (Sandbox Code Playgroud)

另一种方案:

$arr = array('a','b','c','d','e','f','g'); 

$arr2 = array();

$shift = 3;

for ($i = $shift; $i < count($arr); $i++) {
    $arr2[] = $arr[$i];
}

for ($i = 0; $i < $shift; $i++) {
    $arr2[] = $arr[$i];
}

var_dump($arr2);
Run Code Online (Sandbox Code Playgroud)

解决方案没有临时数组

$arr = array('a','b','c','d','e','f','g'); 

for ($j = 0; $j < 3; $j++) {
    $first_letter = $arr[0];
    for ($i = 1; $i < count($arr); $i++) {
        $arr[$i - 1] = $arr[$i];
    }
    $arr[count($arr) - 1] = $first_letter;
}

var_dump($arr);
Run Code Online (Sandbox Code Playgroud)

  • @blrguy:1)为什么?2)为什么你说**我做完工作之后你到底怎么说?!?! (5认同)
  • @blrguy:这是一个愚蠢的面试问题,不接受他们的提议. (3认同)
  • @blrguy:你最好学习如何编程;-P (3认同)
  • 这是家庭作业吗?你应该添加家庭作业标签,如果是这样的话. (2认同)
  • @blrguy:添加了另一个解决方案,但面试中的这些愚蠢问题是一个迹象,他们的开发人员是新手或白痴. (2认同)
  • @blrguy zerkms花了很多时间帮助你,然后你忘恩负义,没有认识到你在你的问题中没有包含这些奇怪的额外要求而导致你失败​​了.你为什么感到惊讶他被卷起来了.他超过了他的权利.你应该听取批评并从中学习.这是你缺乏的举止. (2认同)