卷首语:

 

  1.任何问题都是思维的问题 ,人是对的,世界才是对的

  2.空格使布局干净,序号使问题清晰,缩进符合人的审美

  3.正式运行前,自我检查有必要

 

心态:

 

1.只有面对才能克服恐惧,智慧才能打开局面
2.人有两点很重要:未雨绸缪 是说人要勤快,别等事情来不及了再去做。防微杜渐是说人要有远见,走一步,看三步。正所谓,胜兵先胜,而后求战。败兵先战,而后求胜
3,抓大放小 不要什么都要,贪多嚼不烂
4.超能现象:你永远比自己想象的要强大的多,合理的制定一些不可能完成的计划有助于激发创造力。

5.做事想目的,避免走弯路

6.人并不像自己想象的那么情绪化,无法完成某件事只可能是因为:

  1.轻视 2.没有合理规划专门时间完成

7.歧路亡羊(不要把问题复杂化。深入≠冗杂)无可追,大海捞针(毫无目标,预期)最无益。应该尽可能简化问题而不是越弄越复杂,是应该把问题理解深刻但是在这个基础上应该尽可能简化问题,最有效的一种简化手段就是实践。因为所有的理论最后都要归结到实践上。所以直接实践是一种可行的方法。

 

  (1)看理论不如看例子。拿到一个知识点,直接看举例最好的。有的知识点属于(盘古开天型)——》没有道理,即为道理。本身就是这样规定的,死套路,照着来就好,这就看会怎么用就行了。(交际花型)——》特别多千丝万缕的联系,这种不必一次性全部了解【我之前以为知识,遇到了就应该一次性搞清楚,搞懂,但现在觉得,别的类型,可以,交际花型,不必。理论上,用哪点学哪点,高速迭代才是最好的】

 

所谓效率就是高速获得结果的能力。前提是,你得知道,你想要什么。邯郸学步的故事精髓在于,贪多嚼不烂。所以,贵精不贵多。每每觉得自己混沌不堪的时候不要停下来,就继续做,等休息的时候再去想这些琐碎的事情就好。不值得做好的事情,就把它交给垃圾的时间去做。

 

自己心里要有个A,B,AB,红黑树,自己的时间,自己的事情,理论上,应该都是排的开,做得好的。所以事情不是效率的绊脚石。安排才是

 

 

学习:


  1.任何事物,知识点都是分种类和等级(重要性)的,总带着分类和等级的思想去看待事物,仿佛会更有深度。
编程过程中,对变量的定义

分类:

  通过结构图梳理思路,分类最后剩下的易忽略

  一块圆盘ABC三类

  if(A)

  {}

  if(B)

  {}

else

{}

最后一种情况易忽略,if,else的情况还好。若是无明显分支。只需安排return True/False 易忽略
有些是条件变量,即可以放在条件里面,作为能否达到结果的判定依据
有些是结果变量,用于写在循环里面,存储结果
for(判断变量)
{
存储变量
}

做事应该有纲有目:不应胡子眉毛一把抓

  一次,两次可以是尝试。但若是一直处于这种状态会低效而无用。当处理一件事时,心中应该是有个框架的。为了达成什么目标,应该走哪几步。

  such as:

  Need Food Again:

  1.telephone avoid shop

  2.run avoid hunger

  3.idol courage relief

  4.morning buffer

  5.noon eat good

  6.courage such as Xing's video

每次做题之前,应该有这样注释

三部分:

  1.判空 返回

    判空目的:排除一定不符合的情况。so,不只是empty()

    eg:两个字符串组成树结构,子树可以旋转(a,bc->a,cb)判断两个字符串是否是同一子树旋转而成

    将两字符串排序后比较,结果若不同,最终一定false

  2.变量(judge、store)

  3.题目的条件分类

 


  2.分解的能力
我们期望的是,实现结构化的模块式的函数,因为这样才能更好地发现不同模块之间的异同。不同算法的组成结构之间的相似性
换言之,不应期待通过一个函数实现所有功能,而应该是分解成不同大小的函数
  3.有始有终
初始化变量是十分重要的,尤其是在比大小的地方

  4.知人论世

不同解法,同样解法思路不同代码。不要只看代码量,而是分析,哪个代码适用某种情况

eg:时间复杂度?空间复杂度?优劣如何

  5.纯素题

 题目所有零件一定是自己亲手打造,即使当时实在无法“复现”,也必须过后再次复现

  6.编程的最低要求是:编译无误,至少编译器检查不出。

自己查的,比被动,心态更好

  7.初始化

变量初始化重要,min值赋max,max反之。但也可用实际循环中的某值代替。赋值aim——》无外来数据干扰运算

  8.写代码注释记录感悟,省时

 

 

学习猜想:


  所谓的编程算法是对这两种变量的组合,一般情况应该是由不同的种类组成的,但倘若出现了种类相同的情况,就有可能是递归之类的特殊用法。
  一开始学习的时候没有注意,等号之所以划分,是因为其两边虽然都是变量的形式,但实质是不同的。一边是判断,一边是赋值

 

学习状态:


  1.手机锁柜子或者拿远,一切通讯静音,手速加快。反向倒逼自己进入学习状态,最好不要让琐碎的事情不断的出现,干扰你的学习状态

  2.最大的敌人是遗忘,我们一直存在但并未解决的问题,偶然灵光乍现的解答,不加以确认,记忆,反复琢磨改进最终会出问题。

 

每当我们想到一个新的解法,最应该的就是把它实践,试错,记录,之所以说,千言不敌。是因为没有实践,怎么说都可以,但是实践了的东西,再谈再琢磨,就是有意义的了

  3.一步到位

  我们从不吝惜努力的时间。但我也不能为了显示勤奋而低效地谋杀我的时间,能一步干完的事不要两步。我们要追求用最少的时间干最多的事,所谓三更起五更眠的虚名,没兴趣。但若能保证三更五更的效率,熬夜才有意义

  4.不要干没有意义的事,假如一件事,干不干对你的结果都没有影响,那就能省就省。

 

 

 

玄学:


简单错==简单概念反映出思维分类漏洞
  1.往往我们认为的简单的小问题才是更应该引起关注的点,至少对于我这种从小大题不错,专错小题的人是对的。
简单还能错。是说明简单的是知识点,即这不是一个生僻的知识点,还会错,说明没用对,对于题目的理解有问题,或者思考方式不够缜密,易漏易错。
比如:我最近最常错的一点。>和>=,本身是非常简单的点,但什么时候用哪个没考虑清就会用错,这就是对题目本身没有理解
eg:LeetCode84 Maximum Rectangle
在左右遍历法中,在比较height即当前每个柱状图的高度时,有三种情况,左边比右边 高低等于 但是只写了>说明,首先在分析问题的时候并没有进行分类考虑。
因此,虽不必画规矩的流程图,但大体画几下用个图表来表达还是可以的。
  2.追求更高效的,表达方式,学习方法。
一个念头,更优。

 

语言学:


  1,不支持语音,而希望用手打字,一方面感觉记得牢
再者,语言凝练十分重要,不然劳心耗神,却废话连篇。字字珠玑才有意义,成语的本质是,简明扼要。高知分子好成语,是高效的必然
PS:话若无用,不如不说;事若无用,不如不做。

 

绝对审码法:


选择效仿一个代码之前,应该有重点的多看几个博客,多找方法种类,但优化同种类下的代码实现。
并非所有步骤都需遍历
适当举例,但凡可证本段代码无误即可
理解,查错,都用一个例子即可
省时省力
例子要有代表性,有效的例子是建立在对例子分类情况了解的基础上的

即,用实际数据走一遍整个的代码流程【我一直觉得画流程图应该是有帮助的,以后可以尝试下看效果到底怎么样】

 

因为:大部分对代码的不清晰都是由于对变量的不清晰造成的,无法理解变量的含义导致在进行复杂操作时混为一谈。遇到问题——》看答案——?新问题还是不会的原因有三:

 

  1.观察自己 观察并记录自己的思维方式,是在哪一点上开始不对的。

 

  2.找到对应联系 代码不是凭空产生的,都与问题有所对应,搞清这其中到底哪是哪,带着解法再回看一遍题目是行之有效的

 

  3.一视同仁即为大海捞针 每个代码中一定有一部分是最重要的点睛之笔【这个点睛之笔可能是属于某个类型:比如 单调栈,或者是这道题的特殊奇思妙想】点睛之笔可以着重记在某个本子或者专开博客一个随笔来记录。

 

  4.分类是刚需:但是很难做

 

  因为接触的太少,本身题目都不全,又何谈,融会贯通,分门别类。所以(1)开拓眼界是十分重要的(2)万事开头难,可以自己尽量去分析,然后和其他人的博客对照,亦或是和乐扣上面的分类对比。只能说,多分就好了。分错了也无妨,最后终会发现的,老铁加油

 

 

posted on 2019-08-12 22:28  黑暗尽头的超音速炬火  阅读(282)  评论(0编辑  收藏  举报