ARTS 挑战(第一周)

ARTS 挑战(第一周)

> 每周完成一个 ARTS: 每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称 ARTS)

Algorithm

> 主要是为了编程训练和学习。每周至少做一个 leetcode 的算法题(先从 Easy 开始,然后再 Medium,最后才 Hard)。进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。关于做Leetcode的的优势,你可以看一下 coolshell 上的文章 Leetcode 编程训练 – 酷 壳 – CoolShell

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]);="" $numscopy)="" ??="" false;="" }="" if="" ($subkey="" !="=" false)="" {="" return="" [$i,="" $subkey];=""
=”” ####=”” 排名=”” -=”” 执行用时=”” :=”” 204=”” ms,=”” 在=”” two=”” sum=”” 的=”” php=”” 提交中击败了=”” 67.16%=”” 的用户=”” 内存消耗=”” 15.7=”” mb,=”” 100.00%=”” ###=”” review=””> 主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。所以,需要你阅读并点评至少一篇英文技术文章</count($nums);>

本周阅读的是 71 | 程序员练级攻略:正式入门 中提及的这篇关于如何有效地快速提高自己编程能力的文章(The Key To Accelerating Your Coding Skills)。前两段阅读英文原文,但限于我只有 2000 的词汇量 所以读起来很费劲。索性就在 sougou 上找中文翻译了,这篇文章的重点可以概括为以下几点:
1. 要可以锻炼我们独立解决问题的能力。
2. 最好用谷歌搜索你在 Coding 中遇到的问题。
3. 最好通过文档来学习,并摆脱教程。还有看视频教程其实非常花费时间,所以尽量避免这种方式。
4. 在人生的每一天里探索自我边界以外的东西。
5. 数据结构与算法的重要性。
6. 敲代码时要注意细节,这种习惯可以提高你 Debug 的能力。

想起皓叔博客里的这句话:
> 无论你做什么事,你都会面对各式各样的困难,这对每个人来说都是一样的,而只有兴趣、热情和成就感才能让你不畏惧这些困难

更回顾 Review 的初衷是学习英语,所以还是乖乖地啃完英文原文吧。丢脸~~~

Tip

> Tip:主要是为了总结和归纳你在是常工作中所遇到的知识点。学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。

Share

> Share:主要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的技术文章。

前几个月就想开始 ARTS,苦于钻研 PHP 的 Laravel 框架无法自拔所以一直拖到了这周。其实主要是打开 LeetCode 一秒变睁眼瞎。

由于非计算机专业还多本科课程内容其实我是不具备的,这也导致我对算法和数据结构望而却步。但是今天开到 LeetCode 也支持 PHP 语法,谢天谢地顿时多了几份信心。不过也只是刚开始学习 PHP 时接触了一星半点数据结构与算法,所以为了给自己增加信心就挑了我觉得最简单的一道题:1. 两数之和 解题语言 PHP;倒腾了 1 个小时,参考了其他同学的提交的答案才算做出来,但是发现执行用时 : 204 ms, 在Two Sum的PHP提交中击败了67.16% 的用户。一定要再看看其他 33% 的 PHP 代码。

周末翻了下极客时间里王争老师的《数据结构与算法之美》。其实之所以选这门课主要原因是感性的,觉得老师的名字像极了武林高手。学这门课光心理建设就花了半天时间,学习是要付出时间成本的,当然要想清楚为什么一定要学,学会了以后对我有什么帮助(短期或长远)。

“其实学习数据结构和算法,并不是为了 死记硬背几个知识点。目的是建立时间复杂度,空间复杂度意识,写出高质量的代码,能够设计基础架构,提升编程技能,训练逻辑思维,积攒人生经验,以此获得工作回报,实现个人价值完善人生“ 原来对于学习这件事可以有这么深刻的认知。我希望掌握数据结构与算法,可以让我对看问题的深度,解决问题的角度都有所改变。收藏同学的笔记:为什么学习数据结构与算法?
1. 直接好处是能够写出性能更优的代码
2. 算法,是一种解决问题的思路和方法,有机会应用到生活和事业等其他方面。
3. 长期来看,大脑思考能力是个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。

发表评论

电子邮件地址不会被公开。 必填项已用*标注