Find intersection of two sorted arrays
2016-01-28 07:59
218 查看
共有三种思路。
哈希表。
将较小的那个数组中的所有元素存在哈希表中。然后依次验证另一个数组中的数字是否有出现过。时间复杂度O(m + n),空间复杂度O(min(m, n))
二分搜索法
将较小的那个数组中的每一个元素,都用二分搜索的方法在较大数组中验证是否出现过。当两个数组大小相差很大时,这种方法会很快。
时间复杂度O(min(mlogn, nlogm)), 空间复杂度O(1)。
两个指针
指针i指向一个数组,指针j指向另一个数组。如果i < j,则i++;如果j < i,则j++;如果i = j,则将这个数存入结果,并将两个指针都加一。
时间复杂度O(m + n), 空间复杂度O(1)。
哈希表。
将较小的那个数组中的所有元素存在哈希表中。然后依次验证另一个数组中的数字是否有出现过。时间复杂度O(m + n),空间复杂度O(min(m, n))
二分搜索法
将较小的那个数组中的每一个元素,都用二分搜索的方法在较大数组中验证是否出现过。当两个数组大小相差很大时,这种方法会很快。
时间复杂度O(min(mlogn, nlogm)), 空间复杂度O(1)。
两个指针
指针i指向一个数组,指针j指向另一个数组。如果i < j,则i++;如果j < i,则j++;如果i = j,则将这个数存入结果,并将两个指针都加一。
时间复杂度O(m + n), 空间复杂度O(1)。
相关文章推荐
- SparkSQL JOIN 相关的自己看的笔记;
- OSChina 周四乱弹——说好的年终奖呢?
- 14. Longest Common Prefix
- 统计数据:Google排名高的是什么样的页面?
- 最适合和最不适合新手使用的几款 Linux 发行版
- MFC - SetCapture函数理解
- 11. Container With Most Water
- traceroute命令的用法实例
- redis
- Android如何使用API
- zookeeper Curator
- 日记 01/27/2016.
- java可重入锁
- 5. Longest Palindromic Substring
- Java 多线程的饿汉式和懒汉式
- Rotate Matrix by One
- java main 程序不退出
- argument实参Vs. parameter形参
- Leetcode 31. Next Permutation
- 配置安装theano环境(非GPU版)