Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
mind1949 opened this issue Jun 19, 2020 · 0 comments
Open

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

mind1949 opened this issue Jun 19, 2020 · 0 comments

Comments

@mind1949
Copy link
Owner

mind1949 commented Jun 19, 2020

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号(周六)

解题的基本流程:

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

对几个基本流程的理解

理解题意

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

得出思路

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

用编程语言描述

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

如何优化解题能力的认识

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant