码迷,mamicode.com
首页 > 其他好文 > 详细

面试题(程序03)

时间:2020-05-31 10:58:58      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:移位   arc   print   技术   输入   key   ret   开头   front   

  1. 猴子找大王
    技术图片
     1 <?php
     2 
     3 /**************
     4  *猴子找大王
     5 **************/
     6 
     7 function searchMonkeyKing(int $m, array $monkeys)
     8 {
     9     // $monkeys = range(1, $n);
    10     // print_r($monkeys);
    11     // m % n所得的余数就是被踢掉的猴子,然后把后面的数字移位,移到开头继续取余运算。如此循环
    12     $len = count($monkeys);
    13     $removeIndex = $m % $len == 0 ? ($len - 1) : ($m % $len - 1); //被移除的元素的索引, 取模等于0属于特殊情况
    14     // 将被移除元素的下一个元素直到结尾移动到数组开头,被移除元素之前的元素移动到数组结尾(这样做就相当于移位了)
    15     $behindMonkeys = array_slice($monkeys, $removeIndex + 1);
    16     // print_r($behindMonkeys);
    17     unset($monkeys[$removeIndex]);
    18     // $frontMonkeys = array_diff($monkeys, $behindMonkeys);  //因为这个原数组没有重复的元素,否则不要使用这个函数,会影响结果
    19     $frontMonkeys = array_slice($monkeys, 0, $removeIndex);  //如果原数组有相同的元素,使用这个函数更保险
    20     // print_r($frontMonkeys);
    21     // 然后在拼接两个数组,就做到了移位的效果
    22     $newMonkeys = array_merge($behindMonkeys, $frontMonkeys);
    23     // print_r($newMonkeys);
    24     // 接下来可以使用递归,当数组中只有一个元素的时候返回。
    25     if (count($newMonkeys) == 1) {
    26         $monkeyKing = $newMonkeys[0];
    27     } else {
    28         $monkeyKing = searchMonkeyKing($m, $newMonkeys);
    29     }
    30     return $monkeyKing;
    31 }
    32 
    33 // print_r(searchMonkeyKing(5, [1,2,3,4,5,6]));
    34 
    35 function generateArray(int $m, int $n)
    36 {
    37     if ($n <= 1) {
    38         return ‘请输入大于1的整数‘;
    39     }
    40     $array = range(1, $n);
    41     $monkeyKing = searchMonkeyKing($m, $array);
    42     return $monkeyKing;
    43 }
    44 
    45 print_r(generateArray(5, 1));
    猴子找大王

     

面试题(程序03)

标签:移位   arc   print   技术   输入   key   ret   开头   front   

原文地址:https://www.cnblogs.com/bneglect/p/12996534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!