📅  最后修改于: 2023-12-03 14:42:06.700000             🧑  作者: Mango
HackWithInfy SES是Infosys针对在校学生举办的全球性编程挑战赛。目的是帮助有抱负的年轻人在技术上获得突破,并在Infosys内部寻找人才。本次比赛难度较高,挑战题目设计很有深度,测试了我们的算法设计能力和编程技能。
HackWithInfy SES是我参加过的挑战赛中最难的一次,也是最有收获的一次。比赛完结后,在评分标准下我得了相当不错的分数。感谢Infosys的这次机会,充实并启示了我的职业生涯。
参加HackWithInfy SES的过程非常有趣,这里是我的经历:
第一轮我们从10000多个参赛者中脱颖而出。我的第一轮题目是一个和字符串有关的问题。主要考察面向对象编程(OOP)的理解,还要有很强的编程思维能力。
>>> s = StringManipulator("hello world", 2)
>>> s.get()
>>> 'lo wrd'
在第二轮中,我们的任务是设计动态编程(DP)方案来解决一个更复杂的问题。这个问题很有挑战性,需要考虑许多边界条件和特殊情况。我的任务是设计一个切割平面的方案,使得面积最大。
>>> points = [(0, 0), (0, 10), (10, 10), (10, 0)]
>>> cuts = 1
>>> find_maximum_area(points, cuts)
>>> 25.0
第三轮测试我们对数据结构和算法的理解,需要谨慎分析数据之间的密度和相似性。我的任务是创造一个数据结构,用于快速查找任意给定时间点的最高价格。
>>> stock_prices = [
... (1609459200, 45.0),
... (1609545600, 46.0),
... (1609718400, 47.0),
... (1609804800, 44.5),
... (1609891200, 44.5),
... ]
>>> q = QuoteProcessor(stock_prices)
>>> q.get_max_price(1609804800)
>>> 47.0
HackWithInfy SES的面试准备需要掌握数据结构和算法相关知识。我们可以选择用Python, C++, Java等任何编程语言来提交我们的代码解决问题。
掌握数据结构和算法相关知识,如树、图、递归、分治、贪心、动态规划等。
在HackWithInfy SES中,我们需要完成以下流程:
我们可以在豪华的编程社区Leetcode上练习,更多优秀的题目可以让我们更好的掌握数据结构和算法知识。
# LeetCode 20. 有效的括号
# 验证括号是否有效,并返回true/false
def isValid(self, s: str) -> bool:
stack = []
parentheses = {")": "(", "]": "[", "}": "{"}
for c in s:
if c in parentheses.values():
stack.append(c)
elif c in parentheses.keys():
if not stack or parentheses[c] != stack.pop():
return False
else:
return False
return not stack
HackWithInfy SES结束后,我注意到我的基础知识得到了提高,对全球编程挑战比赛的参与也有了充分的准备。如果您也是一名程序员,并且想要寻找机会提高自己的能力,那么我强烈建议您参加这样的比赛。它们可以帮助我们提高我们的技能,加深我们对编程的理解,最终成为更好的程序员。