为应对挑战做好准备[关闭]


15

几天前,我发现了Codility,并尝试了他们的挑战。我必须说。我把盘子放在盘子后面。我不确定是什么问题,但是我会舔伤口,等待解决方案出来,然后将其与自己的解决方案进行比较。同时,我想为下一个挑战做好准备,因此我正在阅读他们以前的博客文章,并了解如何解决他们先前的问题。我有很多新的事情都还没听说过(笛卡尔树,各种排序算法等)。

因此,如何应对这些挑战(尤其是O(x)的时间和空间复杂性)。我应该读些什么,以准备完成这样的任务?


最近,我一直在研究Haskell,以部分地使我的大脑扭曲(这迫使它扭曲),以专门帮助在思考解决方案时变得更加敏捷。也就是说,我也正在阅读《算法设计手册》(存在免费在线pdf文件)和出于同样目的的库努斯的《计算机编程艺术第一卷基本算法》的车库销售副本(这也是脑部疼痛的严重来源) 。
吉米·霍法

Answers:


3

如何应对此类挑战(尤其是O(x)的时间和空间复杂性)。我应该读些什么,以准备完成这样的任务?

通过得到准备,当然!这是一个实践问题,要加快您感到不足的领域的速度。感谢上帝,一旦信息不足出现在互联网上,而Google是您的朋友,您将获得相当不错的资源。

关于参考资料,我会建议一些确实存在程序员挑战性问题的网站。从这些问题类型中,您可以确定自己的缺点并进行研究。

查找资源:


7

您可以做的唯一准备来进行此类测试的就是练习。多多练习。有很多很好的资源可供编码人员使用,例如topcoder,codegolf,极客,极客,Programming Praxies,CodeKata,Project Euler等。

如果您在数据结构方面遇到问题,最好重新整理一下算法和数据结构的概念。最好的地方是维基百科,但您也可以在nptel,coursera等上寻找算法数据课程。


我一直在寻找书籍之类的资源,但是您的某些链接是新的且内容丰富。
Daniel Fath 2012年

1
@DanielFath:了解它会有所帮助,但是,如果您想变得擅长解决问题,则必须实践一门艺术。在编写软件的世界中,您会反复遇到大量令人惊讶的问题。之前已经解决了它们的经验,使您能够发现新的变化并快速应用好的解决方案。
Blrfl 2012年

我在很大程度上同意实践,我只是表示希望获得更具体的 资源,以考虑解决的问题。我对答案进行了投票(我对所有答案都进行了投票)。
Daniel Fath 2012年

4

关于Google招聘的半官方博客文章推荐这本书:算法设计手册

它非常全面且编写得很好,带有“快速参考”部分,一旦您对通用算法和数据结构足够熟悉,就可以对您的情况有很大帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.