算法与编程能力
    1. 定义一个日志解析函数,接收一个字符串类型的参数,能够把字符串按如下格式返回。可以用任何语
    言实现。
    输入:2020-05-16 19:20:34|user.login|name=Charles&location=Beijing&device=iPhone
    输出:
    {
    name:”Charles”,
    location:”Beijing”,
    device:”iPhone”
    }

    1. <?php
    2. $logStr = "2020-05-16 19:20:34|user.login|name=Charles&location=Beijing&device=iPhone";
    3. $logArray = explode('|',$logStr);
    4. parse_str($logArray[2], $data);
    5. echo json_encode($data);
    1. 有一个已经排好序的整数序列(升序,无重复项),序列中可能有正整数、负整数或者 0,请用你认为
      最优的方法求序列中绝对值最小的数。要求不能使用顺序比较的方法(时间复杂度需要小于 O(n)),
      不能使用内置查找函数,可以用任何语言实现。
      输入:一个有序的整数序列。
      输出:绝对值最小的数。 ```

    <?php $array = [3,2,5,4,-1,-5,6,-8]; $number = null; foreach ($array as $v){ if($number == null){ $number = $v; }else{ if(abs($number) > abs($v)) $number = $v; } } echo $number;

    1. 3. 有一个无序的整数序列(无重复项,长度为奇数),请用你认为最优的方法求序列的中位数。例如给<br />定数组 1529806,中位数是 5。要求算法的时间复杂度需要小于 O(n2<br />),不能使用内置排<br />序函数,可以用任何语言实现。<br />输入:一个无序的整数序列。<br />输出:中位数。

    $arr = [1,5,2,9,8,0,6]; //冒泡排序 function bubbleSort(array $arr){ for ($i=0 ; $i $arr[$j+1]) { $data = $arr[$i]; $arr[$i] = $arr[$j+1]; $arr[$j+1] = $data; } } } return $arr; } $array = bubbleSort($arr); //获取中位数 echo $array[(count($array)/2)-0.5]; ```

    1. 【选做题】有一座高度是 k 级台阶的楼梯,从下往上走,每跨一步只能向上 1 级或者 3 级台阶。请用
      你认为最优的方法求一共有多少种走法。例如给定楼梯台阶数 k 为 3,一共有 2 种走法。要求算法的
      时间复杂度需要小于 O(2n
      ),可以用任何语言实现。
      输入:楼梯台阶数 k。
      输出:走法总数。