简单四则运算 这种有层级且相邻层级之间有关系的可以使用栈stack来解决,我们定义一个nums栈用来存数字,ops栈来存加减乘除等操作。我们使用for循环来遍历输入的字符串表达式,如果这个字符是数字就压栈到nums中,如果是操作就压栈到ops中,这是我们最初的想法,但在表达式中有()和乘除与加减之间的优先级的操作,那么该如何解决呢?对于()和乘除与加减之间的运算级的优先问题,我们可以通过提前运算来解决。那么在压栈时,我们就要把运算符区分开来,遇见(我们就压进去,当遇见)时我们就要把括号之间的数都算赶紧再继续操作,遇见普通的加减乘除的运算符就要和栈顶比较运算级,如果栈顶的运算优先级大,我们就先处理已经入栈的表达式直到栈顶运算级较小为止。 在尝试优化过程中,我学习到了几种不同的搜索策略,如分治法和二分查找。例如,如果数组是有序的,可以利用二分查找来减少比较次数,从而提升搜索效率。此外,对于无序数组,可以考虑使用哈希表来存储元素及其索引,这样可以实现接近常数时间的查找速度。
我还学到了代码可读性的重要性。在初次编写代码时,我没有过多考虑代码的结构和维护性,导致后续添加新功能或进行调试时遇到困难。通过重构代码,使其模块化和易于理解,不仅提高了开发效率,也使得未来的维护更为便捷。
总之,这道编程题让我深刻认识到算法效率和代码质量的重要性,同时也锻炼了我的问题解决能力和逻辑思维。通过解决一道编程题,我学到了很多宝贵的知识和技能。
首先,我学会了如何将问题分解成更小的部分。在面对一个复杂的编程题目时,我需要将其拆解成多个子问题,然后逐一解决。这种方法不仅有助于我更好地理解问题,还能提高我的解决问题的能力。
其次,我学会了如何运用数据结构和算法。在编程题中,选择合适的数据结构和算法对于解决问题至关重要。通过这道题,我了解到了不同数据结构和算法的优缺点,以及它们在不同场景下的适用性。这将对我今后的编程实践产生积极的影响。
此外,我还学会了如何优化代码。在编写程序的过程中,我发现有些地方的代码可以进一步优化,以提高程序的运行效率。这让我意识到,编写高效的代码是非常重要的,尤其是在处理大量数据或复杂计算时。
最后,我学会了如何与他人合作和交流。在解决编程题的过程中,我与同学们进行了讨论和交流,分享了彼此的思路和方法。这不仅帮助我拓宽了视野,还让我学会了如何与他人合作解决问题。