LeetCode weekly contest 117
今天参加LeetCode weekly contest 117, 采取了不同的策略:边做题边写博客总结。期望这样可以真实地记录所思所想,提高写博客的效率。因为之前2次,事后写博客总是耽误几天时间才写完。
965. Univalued Binary Tree
一道很简单、很弱智的题目,直接DFS/BFS即可。因为BFS在遇到异常节点的时候可以直接返回,更方便。我选择了BFS实现。
1 | # Definition for a binary tree node. |
967. Numbers With Same Consecutive Differences
第二题也是一道十分弱智的题目,直接搜索即可。需要注意的地方是,N == 1 和 K == 0时的特殊处理。
1 | from functools import reduce |
966. Vowel Spellchecker
由于前2题用brute search都解决了,本题我也上来就直接干。结果TLE了,因为暴力法的时间复杂度为O(MN),M = len(wordlist), N = len(queries)。
怎样才能进一步降低时间复杂度呢?我脑子中闪过的第一个词是 单词书(Tire),最近刚在 算法第四版 中学到这一技术。 时间复杂度为O(max(N * wordlist中最长单词的长度, M), 不出意料的话,可以AC,现在已经11:46了。应该写不完了,让我先看一下第4题吧。
1 | class Solution: |