如何开始使用竞争性编程?
如果您是计算机科学专业的学生或编码爱好者,那么您很有可能听到人们讨论他们的竞争性编程技能以及在各种编码挑战或竞赛中的排名和成就。确实,竞争性编程技能是使您脱颖而出、为您的简历增加更多价值并随后在安置或其他职业机会期间为您提供优于其他人的少数技能之一。要知道,包括Facebook、Google、Amazon等在内的许多知名科技巨头都非常重视候选人的竞争性编程技能,甚至通过各种竞争性编程竞赛来招募候选人。
那么,什么是竞争性编程……??
竞争性编程是一项练习,通过在某些关键约束(包括时间限制、内存限制、时间和空间复杂性等)下解决大量现实世界的编程问题来提高您的编程和数据结构和算法技能。您需要提出一个优化的在给定编程问题的时限内以您的首选语言解决,并且您的代码必须通过所有必需的测试用例。最好的部分是在这里,您可以与世界各地的各种聪明才智竞争,不仅可以提高您的编程或 DSA 技能,还可以提高其他技能,如逻辑和分析思维、解决问题、时间管理、将问题分解成小块等等其他。
现在,尽管不是一名有竞争力的程序员,但你们中的许多人已经知道了这一点——但大多数人,尤其是大学生或初学者级程序员的问题是,他们不知道获得正确和有效的途径从竞争性编程开始。因此,出于类似的考虑,在本文中,我们将讨论理想的战略方法,这些方法肯定可以帮助您方便地开始竞争性编程。
让我们开始吧:
1. 学习首选编程语言
首先,您需要做的是选择您喜欢的编程语言,并精通其语法、基础和实现。您需要熟悉内置函数、条件语句、循环等,以及所需的高级概念,例如 C++ 中的 STL 库或Java中的 Big Integers。有多种语言适合竞争性编程,例如 C 、 C++ 、 Java 、 Python等等——然而, C++ 通常更适合个人竞争性编程,主要是因为它的执行时间更快,不过,您可以根据自己的喜好选择任何相关的语言,并且方便。
通过使用网络上提供的各种标准在线资源,您可以轻松地学习和掌握目标编程语言。
2. 学习数据结构和算法
然后,这是竞争编程的核心方面,即数据结构和算法。事实上,学习 DSA 基础知识是开始成为有竞争力的程序员之旅的必要条件。
您需要知道的——一些人会建议您不必事先学习 DSA 即可开始使用 CP,并且可以一路完成,但是,我们建议您至少涵盖 DSA 基础知识,例如 Array , Linked List, Stack, Queue, Tree, Searching, Sorting, Time and Space Complexity, etc. 在开始解决问题和解决竞争问题之前,它会帮助你感到自信并解决大部分问题。如果不很好地了解数据结构和算法,您将无法为给定的编程问题提出优化、高效和理想的解决方案。
要学习和掌握数据结构和算法,强烈建议大家访问 GeeksforGeeks,因为在那里您会找到充足的优质资源,例如免费教程、最实惠的在线课程、现场课程等等。
- 数据结构教程
- 算法教程
- DSA 自学课程
3.开始练习和解决问题
怎么办…??好的,所以在学习了编程语言和 DSA 概念之后——是时候练习你的知识并开始解决问题了。您可以选择任何标准平台开始练习,例如 GeeksforGeeks 等。如果我们特别谈论 GFG,非常推荐,尤其是初学者,由于其易于使用的界面,大量的问题在一个有条理的方式,根据候选人的喜好的各种难度级别,强大的内置IDE等。
您应该首先开始解决初学者级别的问题,最初,您会发现自己甚至在解决这些简单或初学者问题时都在苦苦挣扎,但没有什么可担心的。你不需要放弃并继续努力。例如,您可以查看其他人的解决方案或社论,但只有在您尽最大努力后才能这样做。
4. 开始参加编码挑战或竞赛
进一步,在练习了足够的问题之后,现在您可以通过参加各种著名的编码竞赛来评估、验证或展示您的竞争性编程技能。毫无疑问,除了尽可能多地实际参与这些编码挑战或竞赛之外,没有比这更好的方法来成为一名优秀的有竞争力的程序员了。
有各种平台定期组织这些编程挑战,例如 Codeforces、GeeksforGeeks、CodeChef、HackerRank 等。这些平台每周或每月都会进行大量编码挑战,在这里你需要与众多其他有竞争力的程序员竞争世界。您需要在指定的时间内使用最优解来解决给定的问题。此外,您必须记住的最佳策略之一是,一旦挑战结束,请尝试再次解决您在挑战期间未能解决的问题(或查看社论/解决方案)
5. 与流程保持一致——学习、实践、参与!
大多数人经常忽略的最重要的事情之一是与学习、练习和参与的过程保持一致。是的,您需要知道这是一个持续的过程,并且要掌握竞争性编程——您需要不断学习、不断练习并不断参与。你需要走出你的舒适区,扩大你的极限。例如,在精通基本 DSA 概念之后——转向高级 DSA 或在掌握解决初级问题之后——切换到中级甚至更进一步的专家级问题。
此外,尽管提出了正确的解决方案,但也要检查其他人的代码,以学习找到解决特定问题的各种其他新方法。同样,即使您在编码挑战中失败或表现不佳,您也应该坚持自己的目标并通过不断纠正以前的弱点或错误来继续参与这些挑战。
因此,上述这些步骤可以帮助所有新手和学生(CP 经验为零)非常顺利和高效地开始竞争性编程。此外,在开始竞争性编程的过程中,请记住以下几点:
- 通过在几个标准的竞争性编程社区或讨论论坛中保持活跃,与世界各地的竞争性程序员建立联系,因为这将帮助您学习和成长为竞争性程序员。
- 不要直接跳到解决复杂的问题,而是先解决简单的问题,然后逐渐向高级问题移动。
- 在开始解决问题之前,请仔细阅读问题陈述以获得对问题的正确解释,从而提出正确的解决方案。此外,对于解决特定问题的正确方法,一些主要细节通常隐藏在问题陈述本身中。
- 解决问题时始终牢记时间和空间复杂性因素。
- 不要因为最初的失败而气馁或灰心,而是将它们作为学习来不断提高自己。
同样,除了编程和 DSA 技能之外,竞争性编程更多的是关于奉献、耐心和一致性。此外,要了解如何阅读或处理竞争性编程问题,您可以访问以下链接:
- 如何阅读竞争性编程问题?
- 一种更好的方法来处理竞争性编程
- 竞争性编程:克服给定的问题
所以,你现在在想什么……??去装备自己所需的技能,尽快开始你的竞争性编程之旅!!