左耳听风打卡.ARTS (第1周)
ARTS 挑战的第1周
{success} 每周完成一个 ARTS: 至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tips、Share 简称 ARTS)
Algorithm
{success} 每周至少做一个 leetcode 的算法题(先从 Easy 开始,然后再 Medium,最后才 Hard)。如果不训练看再多的算法书,依然然不会做算法题,看完书后需要训练。关于做Leetcode的的优势,你可以看一下 coolshell 上的文章 LEETCODE 编程训练。
LeetCode 1. 两数之和 解题语言 PHP
题:
给定一个整数数组 `nums` 和一个目标值 `target`,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解:
class Solution {
function twoSum($nums, $target) {
for($i=0; $i<count($nums); $i++){
$subKey = array_search($target-$nums[$i], $nums);
if($subKey == $i){
$numsCopy = $nums;
unset($numsCopy[$subKey]);
$subKey = array_search($diff, $numsCopy) ?? false;
}
if ($subKey !== false) {
return [$i, $subKey];
}
}
}
}
排名
- 执行用时 : 204 ms, 在 Two Sum 的 PHP 提交中击败了 67.16% 的用户
- 内存消耗 : 15.7 MB, 在 Two Sum 的 PHP 提交中击败了 100.00% 的用户
Review
{success} 主要为了学习英文,如果英文不行,基本上无缘技术高手。
本周阅读的是 71 | 程序员练级攻略:正式入门 中提及的这篇关于如何有效地快速提高自己编程能力的文章(The Key To Accelerating Your Coding Skills)。前两段阅读英文原文,但限于我只有 2000 的词汇量 所以读起来很费劲。索性就在 sougou 上找中文翻译了,这篇文章的重点可以概括为以下几点:
- 要可以锻炼我们独立解决问题的能力。
- 最好用谷歌搜索你在 Coding 中遇到的问题。
- 最好通过文档来学习,并摆脱教程。还有看视频教程其实非常花费时间,所以尽量避免这种方式。
- 在人生的每一天里探索自我边界以外的东西。
- 数据结构与算法的重要性。
- 敲代码时要注意细节,这种习惯可以提高你 Debug 的能力。
想起皓叔博客里的这句话:
无论你做什么事,你都会面对各式各样的困难,这对每个人来说都是一样的,而只有兴趣、热情和成就感才能让你不畏惧这些困难
更回顾 Review 的初衷是学习英语,所以还是乖乖地啃完英文原文吧。丢脸~
Tips
{success} 总结和归纳日常工作中的知识点,遇到的问题,踩过的坑。
command + t
open a new tab on google chrome- 通过 Google Images 学习理解单词: etc:gulf 要比 bay 所指的海湾更大。
- 遇到大数值需要遍历的情况常常让 PHP 捉襟见肘,但 生成器函数:
yield
。PHP中被忽略的性能优化利器:生成器可以发挥作用。 array_search('c', ['a', 'b', 'c'])
PHP 判断Array['a', 'b', 'c']
中是否存a
这个元素,并返回索引。- Google Dictionary (Google chrome extend):双击即可弹出非常简单的弹窗,附带一个英文发音和简短的英文释义,用以轻度查询
- 陈皓分享的科-学-上-网分享了很多好用的墙外服务器攻略; 之前折腾了很久都没有搭好SSR,这次跟着Google Cloud Platform免费申请&一键搭建SSR & BBR加速教程 可算一气呵成。
- 为你的项目增加漂亮的 Markdown 文档——binarytorch/larecipe本博客在用。
Share
{success} 输出价值观,分享一篇有观点和思考的技术文章。
前几个月就想开始 ARTS,苦于钻研 PHP 的 Laravel 框架无法自拔所以一直拖到了这周。其实主要是打开 LeetCode 一秒变睁眼瞎。
由于非计算机专业还多本科课程内容其实我是不具备的,这也导致我对算法和数据结构望而却步。但是今天开到 LeetCode 也支持 PHP 语法,谢天谢地顿时多了几份信心。不过也只是刚开始学习 PHP 时接触了一星半点数据结构与算法,所以为了给自己增加信心就挑了我觉得最简单的一道题:1. 两数之和 解题语言 PHP;倒腾了 1 个小时,参考了其他同学的提交的答案才算做出来,但是发现执行用时 : 204 ms, 在Two Sum的PHP提交中击败了67.16% 的用户。一定要再看看其他 33% 的 PHP 代码。
周末翻了下极客时间里王争老师的《数据结构与算法之美》
。其实之所以选这门课主要原因是感性的,觉得老师的名字像极了武林高手。学这门课光心理建设就花了半天时间,学习是要付出时间成本的,当然要想清楚为什么一定要学,学会了以后对我有什么帮助(短期或长远)。
“其实学习数据结构和算法,并不是为了 死记硬背几个知识点。目的是建立时间复杂度,空间复杂度意识,写出高质量的代码,能够设计基础架构,提升编程技能,训练逻辑思维,积攒人生经验,以此获得工作回报,实现个人价值完善人生“ 原来对于学习这件事可以有这么深刻的认知。我希望掌握数据结构与算法,可以让我对看问题的深度,解决问题的角度都有所改变。收藏同学的笔记:为什么学习数据结构与算法?
- 直接好处是能够写出性能更优的代码
- 算法,是一种解决问题的思路和方法,有机会应用到生活和事业等其他方面。
- 长期来看,大脑思考能力是个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。
本作品采用《CC 协议》,转载必须注明作者和本文链接
这样会不会快一点?
@zIym :+1: 厉害
咦,,我记得 leetcode 没有 PHP 的啊,,,
@largezhou LeetCode 中国和LeetCode 都可以用 PHP ,Python, Go, Java, Javasrcript 等语言。
坚持最重要
哎 过两天 又忘记了
还是需要在日常 能用上
楼主,我也准备开一贴,跟大家共同进步 :cow:
@zIym :clap: :smiley:可以和大牛结伴而行啦
@iVerywang 别说笑了,我只是一个小白 :sob:
@largezhou 加上了
@子兴的期盼 应该是这几个月加上的吧,去年看的时候只支持 Java 和 C,C++