【Leetcode Daily】1512好数对的数目
题目浅析
想查看原题可以点击题目链接。
简单地说,就是找出数组中所有数值相同的数对(好数对)数目,但是数对内的两个值下标不能相同,且交换位置仍视作一个数对。
思路分享
本题就是很基础的枚举题,如果暴力方法就是一个循环遍历数对左侧,另一循环遍历右侧,复杂度为 O(n^2)。
而相对高效的枚举方法为,只用一次循环,遍历到的数字记录到哈希表上各个数值出现的频次,每次遇到一个值,就可以查其左边有多少相同值,也就出现了多少的好数对。
换句话,就是遍历数对的右侧值,并以 O(1) 的复杂度记录其左侧的情况。
枚举的思路以及先记录答案再更新记录的原因可看 【Leetcode Daily】1两数之和
灵神把中间的记录的方式极度地简化,可以借鉴这种思路。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!