leetcode题目做了34道了,写下目前的感受,不一定对,需要经常修改内容。
1、代码是怎么写出来的?不是一下子写出来的,是逐步填充,逐步具体的。一句话,写代码也要看到历史和现状,现状不是突然出现的,是有发展历史的。不是从1直接就到10了,而是从1->2->3,逐步递进,最后到10。写代码总要写第一行,这个第一行,就是思考的起点,接下来就是优化、是细化,就是考察思考问题的连续性和灵活性的时候了。什么叫连续性,就是思考一个问题的时候啊,能提出关联问题,能自如地在这些问题中切换;什么叫灵活性,就是思考一个问题的时候啊,一个思路走不通,就走另一个思路。我的思考问题的能力还是差,会被厉害的人碾压,这种被碾压感经常出现,很不好。
2、怎么给变量、方法、类、包取名字?这个问题是一个关键问题,关系到我对代码的理解是否清晰,深入。名字取不好,代码也不可能写好。
3、坚持名实一致。一旦命名完成,就要严格按照命名的含义使用。不要中途改变这个变量的含义,用他干别的事,否则会含义错乱,诱使自己犯错误。如果需要一个变量做别的事,就开一个新变量,不要用旧的。
我在编码中经常犯名实不一致的错误,这是否说明,在工作和生活中,我的思想也是严重脱离实际,会按照自己的主观意愿去无意识地歪曲事实,只是没有计算机告诉我错误了。如果是真的,这很危险。
4、代码能力可以分解为哪些能力?
1)调查能力。就是构思算法的时候,先举他七八十个例子,覆盖所有典型案例,研究这些案例的特性和共性。
2)研究能力。主要就是抽象能力。抽象过程中需要做辨析,把不同的事物、不同的情况区分出来,区别对待处理。把汉字抽象成部首,把部首抽象成笔画,这就是一个典型的逐步抽象的过程,抽象层级越来越高。
3)使用编程语言描述并实现的能力。主要是是否熟悉这个编程语言, 是否熟悉各种流程控制语句及其组合。
5、要自顶向下和自底向上两种思考方式结合起来思考,但是要注意,不能随意跨层级思考,在高层级思考的时候,不要去思考低层级的问题,比如不思考细节怎样实现。要意识到自己现在是在哪个层级思考的。
6、要熟练。要能在10(?)分钟内写出常见算法代码,无bug。无他,只是脑子熟悉了,手熟悉了。能力自然就上来了。
7、算法能力是基础,是第一步。算法能力不行,不可能成为一个优秀的码农。强悍的代码能力不是一天两天获得的,需要大量的联系,勤奋的总结,谦虚的态度。就使用Leetcode来练习吧,按专题练,练到1000道题目,等到练习时长达到两年半,啥问题都没有了。要像狼一样,像渴了想喝水饿了想吃饭一样地吸收知识,提高代码能力。
8、写一个方法的时候,要搞明白这个方法的输入、输出,方法的作用。把注释写起来,不怕多,就怕错。同样的,一个代码块的功能也要定义清楚,如果不清楚,很可能在打代码的时候,缩小或者扩大了这个代码块的功能,搞出问题来。
9、如果一个算法写的特别复杂,不要再写了,肯定是错了,思路错或者别的错误。
10、怎样做leetcode题目?第一遍:20分钟读题,调查,研究,写代码。20分钟内写不出来,就先找到我为什么写不出来,是思路问题,实现问题还是别的什么问题。然后看别人怎么做的,理解,记下来。
第二遍:马上自己写,提交。这一遍很可能还会出问题。
第三遍:优化。能不能有别的思路,消耗的时间和空间还能不能更少点?能不能beat更多的人?
11、接收器、迭代器、分发器、处理器、**器,这些词汇能有效地描述代码断的功能。
12、//todo
标签:10,感受,代码,能力,算法,思考,leetcode From: https://www.cnblogs.com/feimingdi/p/17498941.html