【问题标题】:Rotating a list [duplicate]旋转列表[重复]
【发布时间】:2011-02-20 05:27:44
【问题描述】:

如何旋转列表

例如。

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

现在旋转索引是 3 。该列表应从 d 开始轮换。 最终名单应该是

d e f g a b c

谁能为此提出解决方案?我不想使用内置函数,这应该就地完成。

【问题讨论】:

    标签: php algorithm


    【解决方案1】:
    $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);
    

    另一种解决方案:

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

    没有临时数组的解决方案:

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

    【讨论】:

    • @blrguy:1)为什么? 2) 你为什么说我完成了这项工作?!?!
    • @blrguy:这是一个愚蠢的面试问题,不要接受他们的提议。
    • @blrguy:添加了另一个解决方案,但面试中出现这种愚蠢的问题表明他们的开发人员是新手或白痴。
    • @blrguy:不要浪费时间教我如何与人交谈,最好学习一些琐碎的算法,否则即使在一家糟糕的公司,你也永远得不到一份好工作))跨度>
    • @blrguy zerkms 我花了很多时间帮助你,然后你忘恩负义,没有认识到你在问题中没有包括这些奇怪的额外要求而严重失败。你为什么对他被清盘感到惊讶。他完全有权获得。你应该倾听批评并从中学习。缺少的是你的礼貌。
    猜你喜欢
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 2020-10-07
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多