写点什么

ARTS week 1

用户头像
时之虫
关注
发布于: 2020 年 05 月 27 日

Algorithm


两数之和

这算是开题之旅了,先来道简单的题练习一下。这道题的解题思路是遍历数组,通过目标结果和循环的值来确定另外一个值。然后判断这个值存不存在数组中,如果存在是否就是当前值。如果符合条件则返回。

三数之和

三数之和就比较难了。可以先将数组排序,然后遍历数组。因为是有序数组,如果遍历的值大于 0,那么后面两个值也是大于 0,直接终止程序。

每次遍历,我们可以确定一个值,然后需要两个索引定位到当前值的后一位以及数组的最后一位。在第二个索引小于第三个索引的情况下,判断这三个值之和是否等于 0。如果是,加入结果集,第二个索引自增,第三个自减。继续遍历。

如果三个值和大于 0,说明第三个索引太大了,需要自减;相反则说明第二个索引太小,需要自增。

Review

Modern PHP Developer - TDD


测试驱动开发,英文全称 Test-Driven Development(简称 TDD),是由 Kent Beck 先生在极限编程(XP)中倡导的开发方法。以其倡导先写测试程序,然后编码实现其功能得名。


在 TDD 中开发步骤是这样的:


  1. 写一个失败的测试

  2. 写一个刚好让测试通过的代码

  3. 重构上面的代码


和平时的开发不一样,TDD 倡导先写测试再实现功能,这样可以让我们在开发的过程中就发现到一些错误,从而进行有效地进行规避。而且有利于对程序进行解耦,因为代码在平时已经进行重构,也使得可读性有了一定程序的增强。


Tip

对于在写流程控制的时候,可以提前返回就提前返回,可以提高代码的可读性。

/** *@param array $list *@return bool|array */function array_square1($list){	if (is_array($list)) {		$result = array();		foreach ($list as $item) {			array_push($result, $item * $item);		}
return $result; } else { return false; }}
/** *@param array $list *@return bool|array */function array_square2($list){ if (!is_array($list)) { return false; }
$result = array(); foreach ($list as $item) { array_push($result, $item * $item); }
return $result;}
复制代码

可以看到,虽然两个函数功能是一样的,但是第二个明显看起来会舒服很多。如果流程控制多了起来之后会更明显。

Share


【原创】个人知识树的建立与完善

学习一门新的知识时,应该去建立自己的属于自己的知识树,然后去不断地完善它。像我们去种一棵树一样,一定要精心去培育它才能让它茁壮成长,如果对它置之不理的话。那么它能否存活都是个问题,我们在学习也是一样,如果只是抱着三分热度,之后便没了兴致。那么就会发现连前面学的东西都忘了,什么都不会。


用户头像

时之虫

关注

还未添加个人签名 2020.05.25 加入

还未添加个人简介

评论

发布
暂无评论
ARTS week 1