zoukankan      html  css  js  c++  java
  • 面试题(程序03)

    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));
      猴子找大王
  • 相关阅读:
    Nginx禁止IP,只允许指定域名访问
    预防vsphere勒索病毒,适用于 ESXi 6.x 中的 OpenSLP 安全漏洞 (CVE-2019-5544) 的权宜措施 (76372)
    解决 vCenter root 密码过期无法登陆 User password expired
    停用Veritas Smart Meter-概念与操作
    centos7.0 没有netstat 和 ifconfig命令问题
    MAVEN剪除传递依赖
    Spring+SpringMVC+MyBatis+Maven框架整合
    CentOS7配置MongoDB
    利用mybatis-generator自动生成代码
    idea提交本地项目到git
  • 原文地址:https://www.cnblogs.com/bneglect/p/12996534.html
Copyright © 2011-2022 走看看