【LeetCode】多个数组求交集 Java 题解
题目描述
给你一个二维整数数组 nums ,其中 nums[i] 是由 不同 正整数组成的一个非空数组,按 升序排列 返回一个数组,数组中的每个元素在 nums 所有数组 中都出现过。
复制代码
思路分析
今天的算法题目是数组处理题目,题目要求求多个数组求交集。题目比较容易理解。在求解的过程中,我们需要记录出现的元素和频次,最常用的数据结构就是 hashmap 了。题目要求返回值是升序。我们需要对 hashmap 中的数据排序。
除了 hashMap, 还有一种数据结构 treeMap, 可以对 key 进行排序,减少我们的排序工作。
以上是 map 相关的解法。再次分析这个题目, num 只有 数字,我们也可以直接使用 数组来存储元素和元素出现频次。数组是一段连续的内存空间,天然排序,执行效率比较高。实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/5a638556b2a56aac890a1acd1】。文章转载请联系作者。
评论