Git Product home page Git Product logo

leetcode's Introduction

Leetcode

language Documentation Go Report Card leetcode-cn@mind1949

My solutions to leetcode problems.

Structure

algs
├── 0001.thought.md  // 思路、正确性证明、复杂度分析
├── 0001.two_sum.go // 实现代码
└── 0001.two_sum_test.go // 测试代码

Run Test

make test

leetcode's People

Contributors

mind1949 avatar

Watchers

 avatar

leetcode's Issues

解题过程的流程化与标准化

20年6月19号(周五)

背景
在尝试解决leecode的第十题时,逐渐感受到解题过程的大致样子。

虽然在刷题过程中,算法都是用编程语言来实现的。但是这仅仅是用编程语言来描述人的解题思路。
所以在着手解决一个leetcode问题前,要做的是首先搞清楚自己的大脑是用何思路去解决问题的,归纳总结出一个通用的解题思路。然后寻找各种极端的测试用例去检验这个通用的解题思路,慢慢修正自己的解题思路。当较难通过测试用例去验证自己的解题思路时,就开始去证明或者证伪自己的解题思路。最后再用编程语言去描述自己的解题思路。

当尝试用上面的想法指导自己解题时,猛然发现这个解题过程是完全可以流程化、标准化的。就像解数学题一样😊

20年6月25号(周四)

试验了下在力扣**上写题解,再提交代码,发现可以很好的走完上面整条流程

20年6月26号(周五)

发现的问题:

  • 思路是对的,但是有些情况却没有考虑到;
  • 不能很好的用编程语言描述自己的思路,需要再写完一部分后再次修改才可以整洁的写出来;

解决办法:
谋定而后动。第一要尽量去详尽、精确的思考;第二写代码前先想好自己要怎么组织代码,对于自己没有想出来的代码组织方式就在脑海里多理解几遍。

20年6月30号(周二)

昨晚学习了动态规划。上周就看别人说用动态规划啥的。当时觉得这个方法应该很高级吧。但自己学习了之后发现其并不是空中楼阁,理解起来也并不难。之所以算法书上描述的很复杂,是因为算法这个东西描述起来就很不容易,要想描述的清楚就需要长篇大论。算法书的优点是将大量常用的技巧给你汇总出来,缺点就是大量描述性文字,让人学习起来比较枯燥。

20年7月3号(周五)

昨天刷了leetcode的第22题--生成括号。通过结合具体问题反复思考,最终得出思路,发现就是个排列组合题目。当我写完题解,提交代码后发现很多人的题解说什么动态规划、回溯法啥的,发现这也太唬人了。这种问题根本不需要套算法,直接解决具体问题的思考比什么都有锻炼思维的效果。

20年7月4号(周六)

刷题时不光要自己想解法,还要学习别人的解法,把别人解法中优秀的**、观念提炼出来,这样自己在解决后面的问题时就会有更多的**工具可以使用。

20年7月17号(周五)

在脑海中将思路转换为代码时,就应该先估算出大致的时间复杂度。这样做是为了提早排除低效的算法。

20年7月25号(周六)

解题的基本流程:

理解题意 --> 得出思路 --> 使用编程语言描述

对几个基本流程的理解

理解题意

理解题意似乎没什么好说的。

得出思路

  • 归纳法。通过枚举例子,观察归纳一个通用的解决问题的思路。
  • 积累了一定的解题技巧、**后,就可以自动的根据面对的问题,选择对应的技巧、**了。

用编程语言描述

  • 掌握语言特性。
  • 有时候一个思路可以用多种方案去描述,但是总存在一些较好的描述方案。这种好就是简介、明白。需要自己多思考,多想其它人学习。

如何优化解题能力的认识

通过上面的简单分析不难的得出,算法并不是什么天赋、妙笔生花似的东西,而是一种只有脚踏实地的积累才能逐步培养出来的技能。这段时间积累了些解题经验后,我觉得已经到了在做题过程中按照整套解题流程将各个**、方案整理出来,帮助自己培养、优化解题能力的时候了。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.