7.8-Contest 40-小结

637. Average of Levels in Binary Tree

这道题比较简单,只需要对 tree 进行 level traversal 的同时,计算每层的 average value。

640. Solve the Equation

式子中没有括号,只有加减,而且最多只有一次项。把式子以 '=' 分为两部分,分别计算左式和右式的 x 的系数和常数项,然后只需要比较左右式的 x 的系数和常数项,即可得到解。需要注意式子中出现负号的情况。

此次完成了前两道题

638. Shopping Offers

可以使用 recursiondynamic programming 的方式对这道题进行求解。
recursion:
1)依次选用一个 special(最多100次),然后 recursive call,最多6层
recursive call。
2)可以先算出不使用 special 的价格,然后依次尝试各种 special,如果能使价格降低就 recursive call,这样做可以做实现剪枝。
(还可以使用hashmap<needs, total>,把之前各种情况的needs作为key,花费作为value记录下来,避免重复计算。)
dynamic programming:
需要将高维 dp 转换为一维的,方便计算,而且主要是因为这里 item 的种类个数不确定,所以维度不确定。可以写 encode 和 decode 函数处理维度转换。接下来,只需要对有值的单元,进行各种尝试,求得之后单元对应的值(花费)。

639. Decode Ways II

使用 dynamic programming 的思想,分为两种情况:只以当前字符作为一个字母;以当前和前一个,这两个字符作为一个字母。只不过这道题在每种情况中,细分情况的时候需要考虑'*'。
优化:可以只使用两个变量来保存前一个,和前前一个的情况个数,用于当前的计算。时间复杂度从 O(n) 优化到 O(1)。
注意:这两个变量最好是 long ,防止溢出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,793评论 0 33
  • 其实在国内,绝大部分工作并不真的要求你英语多好,编程也一样。如果只是做到平均水准或者比较好,都未必要英语很熟。但是...
    小立狐狸阅读 2,008评论 4 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,286评论 19 139
  • 很实用的编程英语词库,共收录一千五百余条词汇。 第一部分: application 应用程式 应用、应用程序app...
    春天的蜜蜂阅读 1,490评论 0 22
  • 什么是daily scrum? Daily Scrum是指每天在固定的时间以及固定的地点,召集developmen...
    溺于深海_8a47阅读 425评论 0 0