译者 | 弯月 出品 | CSDN(ID:CSDNNews) 这个世界需要的是开发者,我为什么要在编程竞赛上花时间呢? 我自己就是开发,但我发现大多数开发者(包括许多“非常”有能力的开发者)并不是太擅长做数据结构、算法以及一些通用的问题。很可悲的是,许多人只不过是通过遵循一些基本的步骤来开发应用程序,或者做一些非常简单的软件,然后称自己为“程序员”。 这个时代人人都能编程,所以深入学习数据结构和算法不再是当今学生们的第一选择,即使是那些本应非常重视这些领域的学生。 即使是我,作为一个开发者,也没有参加过太多编程竞赛,但我还是会尽量在算法和数据结构上多花些时间,学习如何编写高效的代码,并鼓励和推荐所有人都关注这个方面。 下面是一些例子,表明数据结构、算法和编程竞赛(一般意义上的)的内容能帮助学生们:
现在进入正题。 做编程题时的五个步骤 几天前在做一道编程题时,我发现我在解题时都会遵循一个固定的模式。我又做了几道题,并写下了解题前后我脑海中的步骤。很惊讶的是我发现竟然真的有规律可循,我甚至都不知道我用了五个步骤,但有了这五个步骤,我就能更高效地解题了。 正如我前面说过的,很可能你也会下意识地使用这些步骤,但如果你进行总结,并意识地使用后,就会发现惊人的区别。 1.理解并分析问题 阅读题目,开始思考题目,可能的话在纸上写下给出的条件和你需要找出的条件。 问自己几个问题:
2.仔细阅读示例输入 仔细阅读示例输入,试着想出更多的示例输入,这样能帮你更好地理解题目,而且,这样能让你想清楚你的代码需要处理多少种情况,可能的输出或输出范围是什么。 这里我建议:
然后开始处理边界条件:
3.分解题目 对于大型问题来说这一步非常非常有帮助。这种情况下我建议遵循以下步骤:
4.开始解题和写代码 现在题目已经分析完,可以真正编写代码了。如果不能一次性解完,那么可以先给一个简单的部分写代码,随着解决问题的深入,你会逐步发现更多细节,从而找出更多的思路。 只需要记住这三点,就一定能找到解法:
而且,如果你是在面试中,不要浪费时间去解决整个题目再告诉面试官,应该不断简化问题,不断告诉面试官你解决问题的方法。
5.回顾并学习 这部分是最重要的!解题完成后,一定要回顾下:代码能否改进?有没有另一种解题的方法?
下面是在写完代码之后应该问自己的问题:
除了这些问题之外,还要检查同一题目其他人的解答,看看别人是怎样完成的,这个过程中你会学到很多。 总结 本文讨论了以下五个步骤:
以上,希望这篇文章可以提高你的解题技巧。
|
|