Skip to content

Dracarys/LeetCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7968e0e · Sep 4, 2019
Jan 24, 2019
Feb 18, 2019
Feb 14, 2019
Jan 24, 2019
Feb 18, 2019
Feb 25, 2019
Mar 4, 2019
Feb 20, 2019
Feb 19, 2019
Jan 25, 2019
Feb 22, 2019
Feb 21, 2019
Mar 17, 2019
Jan 24, 2019
Apr 9, 2019
Apr 17, 2019
Apr 17, 2019
Mar 4, 2019
Sep 4, 2019
Sep 4, 2019
Jan 24, 2019
Apr 8, 2019
Mar 12, 2019
Jan 24, 2019
Apr 17, 2019
Feb 25, 2019
Feb 20, 2019
Mar 27, 2019
Feb 23, 2019
Mar 13, 2019
Apr 17, 2019
Feb 21, 2019
Jan 24, 2019
Jan 24, 2019
Jan 24, 2019
Apr 9, 2019
Mar 20, 2019
Feb 22, 2019
Jan 24, 2019
May 3, 2019
Jan 24, 2019
Sep 3, 2019
Feb 22, 2019
Jan 24, 2019
Feb 23, 2019
Jan 27, 2019
Jan 24, 2019
May 21, 2019
Jan 24, 2019
May 3, 2019
Jan 24, 2019
Feb 21, 2019
Jan 24, 2019
Jan 24, 2019
Jan 24, 2019
Mar 13, 2019
Mar 19, 2019
Feb 19, 2019
Feb 26, 2019
Jan 24, 2019
Feb 21, 2019
Mar 17, 2019
Feb 25, 2019
Mar 29, 2019
Jan 24, 2019
Apr 17, 2019
Jan 24, 2019
Jan 24, 2019
Sep 3, 2019
Jan 24, 2019
Mar 5, 2019
Jan 24, 2019
Feb 19, 2019
Mar 29, 2019
May 16, 2019
Jan 27, 2019
Jan 24, 2019
Jan 24, 2019
Apr 17, 2019
Feb 15, 2019
Feb 20, 2019
Feb 20, 2019

Repository files navigation

Leetcode 题解

介绍

算法一直都是自己的弱项,这与自己之前的轻视是分不开的,所以为了弥补之前的缺失,特建立该仓库,记录自己解决 Leetcode 各个习题的过程。

每个问题可能会包含多个 Solution,一般前几个都是自己独立解答及优化过的算法,最后的多是该问题目前的最优算法,非本人独立解决。Playground 中会带有说明注释,但是因为是练习性质的仓库,缺少对注释的严格校对过程,所以不排除存在因疏漏而未标注的地方。

解题心得

1、先确定思路方向

遇到陌生的算法题,首先要确定思路方向,脑子笨就先用笔在纸上写伪代码,然后在去实现,最后在解决边界问题。

2、递归

在解递归的过程中,切忌不可深入思考多层,否则只会让脑子陷入混乱,只要考虑清楚一个环节中要解决的问题即可,然后找到一个恰当的终止条件。

3、不要想一蹴而就

任何算法都不是一蹴而就的,它是一个循序渐进的过程,实现了第一版的算法后就要考虑哪些环节是可以优化的,如何减少循环次数,如何减少占用空间等等,从而得出第二版、第三版...。

4、优化

对同一思路下的算法优化,就是尽力缩减非必须指令数,力争用更少的指令完成任务,这就需要对计算机有更深入的了解。此外就是语言本身,不同的编程语言有其自身特点,只有熟悉它才能畸形针对性的优化。但是对于我等新手来说切忌铺的太开,想遍地开花是不现实的,先着重深入了解自己最熟悉的语言,之后在横向拓展方能事半功倍。

5、提升

算法优化是有限的,如果要实现指数级的优化,必须对问题有深入的了解,摒弃过去,另辟蹊径,而且要具有一定的数学知识,例如:通过黄金分割法求斐波那契,这种特别的求解方式可不是通过对现有算法优化就能得到的,要扩大知识面,多接触,多练习,多多多交流。

6、求援不丢人

如果一个问题半个小时都想不出头绪,连最暴力直观的想法都没有,那就去找人请教吧,或者 Google 一下,翻翻 LeetCode 的评论。因为这很可能是因为你知识储备不足造成的,及时的求援可以更快的发现不足,避免浪费时间,解决知识短板。当然卡壳也可能是自己理解出现偏差,或者思考过多导致的,这就得靠自己细心梳理,回顾具体是在思考过程中的哪个环节出现了问题。

了解完别人的思路后并不等于自己就会了,下次题目稍加变形可能还会卡壳,要多写,尤其是大龄程序员思绪不容易集中,更要多写代码。读书百遍其义自现的道理这里也同样适用。

最后,也是最重要的一点,求援不丢人,正所谓:“闻道有先后,术业有专攻,如是而已。”

7、动态规划(Dynamic programming)

协议(Lisence)

保留所有权利。

About

LeetCode in Swift

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages