Java如何获取两个数组的交集(难度升级版)

  • 原创
  • |
  • 浏览:597
  • |
  • 更新:

题目:给定两个数组,编写一个函数来计算它们的交集(即相同元素)。

 

约束:返回结果中,相同元素的出现次数应该和两个原始数组中该元素的出现次数保持一致,即如果某个相同元素在原始两个数组中均出现了2次,则在输出结果中,该元素也要出现2次。

 

如果仅获取相同元素,而忽略次数,可参考如下引用经验

 

Java如何获取两个数组的交集(难度升级版)

工具/原料

  • Eclipse
  • JDK1.8

方法/步骤

  1. 1

    编写代码,获取两个有序数组的交集,注意,通过嵌套循环来获取交集,因为数组有序,所以可以记录内存数组的索引,无需每次从头遍历内层数组。

     

    Java如何获取两个数组的交集(难度升级版)
  2. 2

    编写代码,先调用类库提供的排序算法(快速排序或归并排序)对两个原始数组排序,然后调用第一步创建的方法获取两个有序数组的交集。

     

    Java如何获取两个数组的交集(难度升级版)
  3. 3

    编写测试方法。

     

    Java如何获取两个数组的交集(难度升级版)
  4. 4

    运行测试方法,观察控制台输出,符合预期。

     

    Java如何获取两个数组的交集(难度升级版)
  5. 5

    平台提交代码,测试通过。

     

    Java如何获取两个数组的交集(难度升级版)
  6. 5
    相关内容未经许可获取自百度经验
  7. 6

    算法总结:如果直接通过嵌套循环的方式获取相同元素,时间复杂度为 O(n*m) (n,m为两个数组的长度),通过先排序再循环查找,时间复杂度可降为 O(nlogn) ,O(mlogm) 或者 O(n+m) 中较大的那个。

     

    Java如何获取两个数组的交集(难度升级版)
    END

注意事项

  • Java类库提供的排序算法会根据数组元素的数量自行选择使用归并排序或快速排序
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部