如何解决任何编码问题?
每当给出任何编码问题时,大多数人都会根据本能来遵循一些预定义的步骤,从而使他们可以有效地解决该问题。 在有意或无意的情况下,即使您在无意识地遇到任何问题时也可能会遵循其中一些步骤,但是在阅读本文之后,您将尝试与这些令人惊奇的步骤相关联,从而可以更有效地解决问题。
因此,在本文中,我将讨论解决任何编码问题时可以采取的5个步骤✨
世界需要开发人员,为什么我要花时间从事竞争性编程?
作为我自己的开发人员,我发现那里的大多数开发人员(包括许多“非常”熟练的开发人员)在数据结构,算法和问题解决方面总体上都不是那么好。 可悲的是,如今,许多人都在挤一些开发应用程序或简单软件的基本步骤,并自称为“编码器”。
随着每个人的发展,如今,深入学习数据结构和算法已成为学生的第二选择,即使对于每个学生来说,这都是必不可少的领域,
尽管我是一名开发人员,但对竞争性编程的投入并不多,但我仍然尝试花更多的时间来学习数据结构和算法以及如何编写高效的代码,并且我鼓励并建议每个人也都应该专注于此。
因此,这里有一些例子,其中的数据结构,算法和竞争性编程(通常)可以帮助学生-
- 大学安置
- 编写高质量的代码
- 高效代码(时间和空间复杂度)
- 充分利用资源
- 逻辑推理
- 接触(有大量的CP学生在学习)
- 机会(大量的CP竞赛在那里)
- 在这个过程中,您将获得很多乐趣
“代码教您如何面对真正的大难题 ”
—杰克·多西
现在转到主题,
遇到任何编码问题时,我应遵循的5个步骤
几天前,在进行编码问题时,我发现无论解决什么问题,我都有自己的模式。 我做了其他一些问题,并在解决任何问题之前和之后都写下我的想法。 令我惊讶的是,有一个共同的模式,在不知不觉中我正在做这5件事,而现在我知道这5步,我就能更有效地解决问题。
再次,正如我在介绍中所说,很有可能您也无意识地使用了这些步骤,但是当您发现自己将开始有意识地应用这些步骤,然后注意到其中的区别????
1.了解并分析问题
阅读问题,开始思考,如果可能的话,在纸上写下给出的内容和需要查找的内容。
问你自己,
—您能完全理解问题吗?
—您能向外行解释这个问题吗?
—需要多少输入?
—这些输入的输出是什么
—您可以从问题中分离出一些模块或零件吗?
—您是否有足够的信息? 如果不是,请尝试再次理解该问题。
2.仔细阅读示例输入和示例
仔细研究一些示例输入并提供更多示例,这肯定可以帮助您很好地理解问题,此外,它还为您提供了清晰的方式来确定您的代码应处理多少种情况,以及所有可能的输出结果范围。
这就是我的建议
—举非常简单的例子并找到输出
—进行更复杂,更大的输入,以了解输出结果,我们想要多少个用例
然后是“处理边缘案例的时间”
—试试无输入的问题,现在输出应该是什么
—试用输入无效的问题,现在应该输出什么
3.解决问题
当手头的问题很大时,此步骤确实非常有用。 在这种情况下,我建议以下做法:
—尝试为手头的问题制作流程图或UML
—将问题分为不同的模块或子问题
—尝试使每个子问题具有独立的功能
—通过按要求的顺序或在必要时调用它们来连接这些子问题(可能一个函数将调用另一个子函数)
—在处理试图实现某些实际问题(例如管理系统等)的问题时,尝试使用类和对象
4.开始求解/编码
现在您已经分析了问题,是时候实际编写代码了。 如果您不能立即完全解决问题,请尝试为更简单的子部分编写代码,然后再逐步解决问题,逐步获得更多新想法。
只需记住三件事,您肯定会弄清楚路径????
-您的起点
- 你现在在哪?
- 你的目的地是哪里?
另外,在进行面试时,不要浪费时间弄清楚整个解决方案,然后告诉面试官,继续简化问题,并告诉面试官您如何解决问题。
-告诉面试官您打算如何开始
-告诉您现在有什么主意
—找出您在该问题中面临的最困难的部分
—忽略“最困难的”部分一段时间,然后开始解决一个较简单的子部分,这将使您有更多的时间考虑前一部分
—一旦完成了简单的子部分,就尝试对困难部分也采用类似的方法
—在解决问题时,您可能会想出更好的解决方案,并告诉面试官
5.回头了解更多
现在,这是最重要的部分! 完成后,回顾一下是否可以改进代码,是否有其他方法可以解决给定的问题?
不要只是在完成工作后就放弃,在对可能的解决方案感到满意时就放弃,而您已经彻底探索了这个问题!
完成代码编写后,您应该问自己一些问题
- 此代码是否针对所有可能的输入(包括边缘情况)运行
- 还有其他解决方法吗?
- 代码高效吗? 可以更有效吗?
- 代码可读吗?
- 如果其他人向您显示了此代码,您是否能够理解?
- 性能可以提高吗?
- 可以使用其他一些可以提供更好结果的算法吗?
除了这些问题之外,还要检查其他人对同一问题的解决方案,看看他们是如何解决的,在看到其他人的代码的同时您会学到很多。
摘要
这是我们在本文中讨论的5点
and分析并理解问题
????看一下样本输入和用例
the将问题分解为较小的子部分,功能或模块
????开始求解/编码
????完成后,请回顾是否可以改进代码,是否有其他方法可以解决给定的问题,
就是这样,我希望本文能为您的问题解决能力增加价值????
想提高自己的技能吗?
有兴趣提高您在数据结构,算法和竞争性编程方面的技能吗? 我已经启动了一项名为“每日代码”的计划,每天我们一起解决一个问题,请检查以下存储库:
如果觉得有用,请给它一个⭐
希望您对这篇文章有所帮助helpful
如果您想讨论一些问题,请随时与我联系:D
如果您发送反馈,建议或询问,我会非常高兴。 而且,我喜欢结交新朋友,我们可以成为朋友,只要给我发邮件。
非常感谢您阅读全文。 如果您需要任何帮助,可以与我联系:
电子邮件:[email protected]
网址: http : //madhavbahl.tech/
GitHub: https : //github.com/MadhavBahlMD
领英(LinkedIn): https : //www.linkedin.com/in/madhavba hl /
From: https://hackernoon.com/how-to-approach-any-coding-problem-9230f3ad6f9