給定兩個數組,寫一個方法來計算它們的交集。
例如:
給定 nums1 =[1, 2, 2, 1]
, nums2 =[2, 2]
, 返回[2, 2]
.注意:
- 輸出結果中每個元素出現的次數,應與元素在兩個數組中出現的次數一致。
- 我們可以不考慮輸出結果的順序。
跟進:
- 如果給定的數組已經排好序呢?你將如何優化你的算法?
- 如果 nums1 的大小比 nums2 小很多,哪種方法更優?
- 如果nums2的元素存儲在磁盤上,內存是有限的,你不能一次加載所有的元素到內存中,你該怎么辦?
我的方法:hash,掃一遍nums1和nums2。
復雜度:O(m+n)
AC了,但速度不快。排在前面的似乎先排序,再掃數組。
2.如果nums1小很多,
//用hash,把nums2掃一遍。
排序,再掃描。
不排序,二分搜索。
3.用hash,分段加載nums2掃描。