题目链接:
https://leetcode.cn/problems/4sum-ii/
视频链接:
https://www.bilibili.com/video/BV1Md4y1Q7Yh
我的代码:
https://leetcode.cn/problems/4sum-ii/submissions/721075509
看到题目的第一想法:
读完题第一反应就是暴力四层循环直接枚举所有组合,但是马上意识到四层循环时间长,过不了数据范围。
解题过程中遇到的困难:
- 一开始想不到拆分数组的思路,纠结四个数怎么同时匹配,思维局限在一层一层遍历;
- 不熟练哈希表计数写法,不知道怎么快速统计两数之和出现的频次;
- 易混淆键值对应关系:key 存和、value 存该和出现次数,一开始搞反;
- 对「舍空间换时间」的算法思想理解不深,一开始不太理解为什么要额外消耗内存换取效率。
今日收获
- 这道题很好的体会到哈希法空间换时间的思想,通过把四数问题拆分成两组两数之和,利用哈希表快速查询、统计,解决了超时问题。
- 理解了字典统计次数、快速查找匹配项的写法,加深了对哈希表的理解。