旋转列表 [英] Rotating a list

查看:176
本文介绍了旋转列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何旋转列表

有关,例如。

  $ ARR =阵列(A,B,C,D,E,F,G);
 

现在旋转指数为3。该清单应旋转从D开始。 最终的名单应该是

  D E F G A B C
 

任何人都可以提出一个解决方案?我不想使用内置的功能,这应该是就地进行。

解决方案

  $ ARR =阵列(A,B,C,D,E ,F,G);
$ I = 3;
$ ARR2 = array_merge(array_slice($改编,$ I),array_slice($改编,0,$ I));

后续代码var_dump($ ARR2);
 

另一种解决方案:

  $ ARR =阵列(A,B,C,D,E,F,G);

$ ARR2 =阵列();

$移= 3;

为($ I = $移位; $ I<计数($ ARR); $ I ++){
    $ ARR2 [] = $改编[$ i];
}

为($ i = 0; $ I< $移; $ I ++){
    $ ARR2 [] = $改编[$ i];
}

后续代码var_dump($ ARR2);
 

没有临时数组解决方法:

  $ ARR =阵列(A,B,C,D,E,F,G);

为($ J = 0; $ J&所述; 3; $ J ++){
    $ first_letter = $改编[0];
    为($ i = 1; $ I<计数($ ARR); $ I ++){
        $常用3 [$ I  -  1] = $改编[$ i];
    }
    $常用3 [计数($ ARR) -  1] = $ first_letter;
}

后续代码var_dump($ ARR);
 

How do I rotate a list

For eg.

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

Now the rotating index is 3 . The list should be rotated starting from d. The final list should be

d e f g a b c

Can anyone suggest a solution for this? I dont want to use built in function and this should be done inplace.

解决方案

$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);

Another solution:

$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);

Solution without temporary array:

$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);

这篇关于旋转列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆