LeetCodeDiary

A Diary for solving LeetCode problems

View on GitHub

202105第3周

本周关键词

做题数据

题目及代码

名字 难度 题目 解答 tag
0421.数组中两个数的最大异或值 中等 题目 代码 位运算(每日一题)
0993.二叉树的堂兄弟节点 简单 题目 代码 二叉树(每日一题)
1442.形成两个异或相等数组的三元组数目 中等 题目 代码 位运算(每日一题)
1738.找出第K大的异或坐标值 中等 题目 代码 位运算(每日一题)
0692.前K个高频单词 中等 题目 代码 堆(每日一题)
1035.不相交的线 中等 题目 代码 动态规划(每日一题)
0416.分割等和子集 中等 题目 代码 动态规划(每日一题)
0810.黑板异或游戏 困难 题目 代码 数学(每日一题)

本周总结

这周异或和动态规划题较多。一般来说题目问到 方案数满足某某条件的个数 类似字眼的题目,暴力搜索一般会超时,这时候就要考虑使用动态规划的方法了。找到正确的转移方程十分重要,这就十分考验分析问题的能力,而我恰恰欠缺这一点。从题目中抽象出问题的能力。希望能在题目数量上去后能够逐渐改善吧。

0416.分割等和子集 是动态规划中背包问题的一种,接下来可以详细学习一下。

顺便学习到了函数 reduce 方法,假如我有一个数组 nums ,我想求该数组的异或值,除了 for 循环,我还可以这么写:

xors = reduce(lambda x,y:x^y, nums) # 求异或值

该函数在时间复杂度上并无提升,但表达上较为简洁,值得学习下。