202105第3周
本周关键词
- 每日一题
- 动态规划
- 位运算
做题数据
- 困难 1; 中等 6; 简单 1
题目及代码
| 名字 | 难度 | 题目 | 解答 | tag |
|---|---|---|---|---|
| 0421.数组中两个数的最大异或值 | 中等 | 题目 | 代码 | 位运算(每日一题) |
| 0993.二叉树的堂兄弟节点 | 简单 | 题目 | 代码 | 二叉树(每日一题) |
| 1442.形成两个异或相等数组的三元组数目 | 中等 | 题目 | 代码 | 位运算(每日一题) |
| 1738.找出第K大的异或坐标值 | 中等 | 题目 | 代码 | 位运算(每日一题) |
| 0692.前K个高频单词 | 中等 | 题目 | 代码 | 堆(每日一题) |
| 1035.不相交的线 | 中等 | 题目 | 代码 | 动态规划(每日一题) |
| 0416.分割等和子集 | 中等 | 题目 | 代码 | 动态规划(每日一题) |
| 0810.黑板异或游戏 | 困难 | 题目 | 代码 | 数学(每日一题) |
本周总结
这周异或和动态规划题较多。一般来说题目问到 方案数、满足某某条件的个数 类似字眼的题目,暴力搜索一般会超时,这时候就要考虑使用动态规划的方法了。找到正确的转移方程十分重要,这就十分考验分析问题的能力,而我恰恰欠缺这一点。从题目中抽象出问题的能力。希望能在题目数量上去后能够逐渐改善吧。
0416.分割等和子集 是动态规划中背包问题的一种,接下来可以详细学习一下。
顺便学习到了函数 reduce 方法,假如我有一个数组 nums ,我想求该数组的异或值,除了 for 循环,我还可以这么写:
xors = reduce(lambda x,y:x^y, nums) # 求异或值
该函数在时间复杂度上并无提升,但表达上较为简洁,值得学习下。