算法与编程能力
1. 定义一个日志解析函数,接收一个字符串类型的参数,能够把字符串按如下格式返回。可以用任何语
言实现。
输入:2020-05-16 19:20:34|user.login|name=Charles&location=Beijing&device=iPhone
输出:
{
name:”Charles”,
location:”Beijing”,
device:”iPhone”
}
<?php$logStr = "2020-05-16 19:20:34|user.login|name=Charles&location=Beijing&device=iPhone";$logArray = explode('|',$logStr);parse_str($logArray[2], $data);echo json_encode($data);
- 有一个已经排好序的整数序列(升序,无重复项),序列中可能有正整数、负整数或者 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;
3. 有一个无序的整数序列(无重复项,长度为奇数),请用你认为最优的方法求序列的中位数。例如给<br />定数组 1、5、2、9、8、0、6,中位数是 5。要求算法的时间复杂度需要小于 O(n2<br />),不能使用内置排<br />序函数,可以用任何语言实现。<br />输入:一个无序的整数序列。<br />输出:中位数。
$arr = [1,5,2,9,8,0,6];
//冒泡排序
function bubbleSort(array $arr){
for ($i=0 ; $i
- 【选做题】有一座高度是 k 级台阶的楼梯,从下往上走,每跨一步只能向上 1 级或者 3 级台阶。请用
你认为最优的方法求一共有多少种走法。例如给定楼梯台阶数 k 为 3,一共有 2 种走法。要求算法的
时间复杂度需要小于 O(2n
),可以用任何语言实现。
输入:楼梯台阶数 k。
输出:走法总数。
