leetcode算法想不出来怎么办,leetcode怎么写代码

首页 > 机动车 > 作者:YD1662023-11-03 11:15:13

leetcode算法想不出来怎么办,leetcode怎么写代码(13)

7. 优化迭代

给出最直观解法之后,我们才真正进入算法设计环节,这个阶段就考验算法设计能力了,比如你的动态规划理解是否到位、分治法、回溯法等有没有掌握好等等。对于Decode Ways II这个问题,我们前面已经分析出 f(n) = s[n] * f(n – 1) s[n-1, n] * f(n – 2)。

很明显,这个问题是一个需要用动态规划的问题。为什么这么说呢?首先,它是一个递归问题;其次,它的每一层递归都有重叠,比如f(9) 依赖f(8)和f(7),但是f(8)里面又包含了f(7)。所以我们判断这个问题需要用到动态规划。

假如读者朋友不了解动态规划,建议网上看相关教程或买《算法导论》深入学习。动态规划在LeetCode中实在是太普遍了,是必学内容,而且理解起来有一定难度,需要花大量时间学习。我这里归纳出它的几个要点:

  1. 动态规划是一个递归问题。
  2. 它有重叠子问题。
  3. 它需要一定存储空间来保存子问题的解。
  4. 它的存储空间往往需要压缩。
  5. 用动态规划设计算法,一般从子问题开始,自底向上,直到最终问题。
  6. 它可以把O(n^2)的解法降低到O(n)复杂度。

不知道本头条号(Java编程技术)的各位读者能否理解以上几个关于动态规划的要点,如果不能理解建议找有关资料学习。我们通过运用动态规划的算法设计技术对上面的简单递归算法进行改进,得到算法如下。

leetcode算法想不出来怎么办,leetcode怎么写代码(14)

写出了动态规划版本的算法,这个问题才算是有了满意的答案,才会让面试官满意。

8. 检查和反思

我们经过上面这么长的步骤,终于把算法写出来了。记住,要凭借自己的力量,去挑战一些水平高出自己实力一点点的题目来练习,这样才会有锻炼效果,才能进步。

我们写出解法以后,需要检查一下有没有漏掉各种细节。例如,题目要求我们对返回结果按1000000007取模,然后再返回。如果漏掉这些细节,提交之后得到的答案依然是Wrong Asnwer,岂不是白忙活一场。

最后,如果你还有更高的要求,可以把代码简化一下。你可以看看LeetCode讨论区中各路大神贴出来的代码,都是以尽可能简短、简洁、清晰为荣的。

以上就是我们在LeetCode上面刷题的主要步骤了。看完之后,是不是觉得对自己有一定帮助呢?如果有要补充的地方,欢迎留言讨论,大家互相学习,共同进步。

对互联网、前后端、客户端、架构、分布式、高可用、高并发、高实时、电商、Redis、MySQL、Zookeeper、Spring、Android、浏览器插件、Java、、C/C 、Linux、个性化推荐、社区发现、机器学习、数据挖掘等感兴趣,欢迎关注。

leetcode算法想不出来怎么办,leetcode怎么写代码(15)

上一页1234末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.