青训营X豆包MarsCode技 术训练营第6课 豆包MarsCode Al刷 题

28 阅读3分钟

要寻找字符串的最短循环子串,我的建议是一步到位,即从最短的子串长度开始,检测它是否在字符串中循环出现,这样只要找出循环子串它就是最短的。通过解决一道编程题,我学到了很多宝贵的知识和技能。

首先,我学会了如何将问题分解成更小的部分。在面对一个复杂的编程题目时,我需要将其拆解成多个子问题,然后逐一解决。这种方法不仅有助于我更好地理解问题,还能提高我的解决问题的能力。

其次,我学会了如何运用数据结构和算法。在编程题中,选择合适的数据结构和算法对于解决问题至关重要。通过这道题,我了解到了不同数据结构和算法的优缺点,以及它们在不同场景下的适用性。这将对我今后的编程实践产生积极的影响。

此外,我还学会了如何优化代码。在编写程序的过程中,我发现有些地方的代码可以进一步优化,以提高程序的运行效率。这让我意识到,编写高效的代码是非常重要的,尤其是在处理大量数据或复杂计算时。

最后,我学会了如何与他人合作和交流。在解决编程题的过程中,我与同学们进行了讨论和交流,分享了彼此的思路和方法。这不仅帮助我拓宽了视野,还让我学会了如何与他人合作解决问题。 通过解决一道编程题目,我学到了如何更高效地处理数据结构,并理解了算法优化的重要性。这道题要求在给定的二维数组中找到特定的元素,并返回其位置。起初,我采用了最直观的方法——双重循环遍历整个数组,这种方法虽然简单易懂,但效率低下,尤其是当数组规模较大时,性能问题尤为突出。 在尝试优化过程中,我学习到了几种不同的搜索策略,如分治法和二分查找。例如,如果数组是有序的,可以利用二分查找来减少比较次数,从而提升搜索效率。此外,对于无序数组,可以考虑使用哈希表来存储元素及其索引,这样可以实现接近常数时间的查找速度。

我还学到了代码可读性的重要性。在初次编写代码时,我没有过多考虑代码的结构和维护性,导致后续添加新功能或进行调试时遇到困难。通过重构代码,使其模块化和易于理解,不仅提高了开发效率,也使得未来的维护更为便捷。

总之,这道编程题让我深刻认识到算法效率和代码质量的重要性,同时也锻炼了我的问题解决能力和逻辑思维。