有没有更快的方法来比较Java中的两个Int数组?
发布时间:2020-12-14 05:40:03 所属栏目:Java 来源:网络整理
导读:我有两个相同大小的整数数组,比如n(n是可变的,所以我可以有两个大小的数组,比如4或5或6等),每个数字可以取的值范围是0-9 . 例 Integer[] one = {1,9,3,4} Integer[] two = {1,1,3} 现在,我想比较一号和一号两个这样的 1)我可以获得相同且位置相同的元素数量.
我有两个相同大小的整数数组,比如n(n是可变的,所以我可以有两个大小的数组,比如4或5或6等),每个数字可以取的值范围是0-9 .
例 Integer[] one = {1,9,3,4} Integer[] two = {1,1,3} 现在,我想比较一号和一号两个这样的 我采取的方法是 对于(1)迭代数组1并且对于每个索引,我检查一个[i] == two [i]. – 简单 对于(2)迭代两个数组并且对于i!= j,查看元素是否相同,如果相同则将它们标记为-1以避免将来发生冲突. for(int i =0;i<one.length;i++){ for(int j=0;j<two.length;j++){ if(i != j && one[i] != -1 && two[j] !=-1)){ if(one[i] == two[j]){ whiteCount++ one[i] = -1; two[j] = -1; } } } } 问:现在我想知道是否有更快的方法来做同样的事情? ESP.计算问题的(2)部分. 更新1: 2)使用Dave Challis的解决方案 OLD 46950 ms NEW 42887 ms 解决方法
虽然这可能不是您想要的,但我们可以通过非常简单的更改显着减少操作次数.
从 Integer[] one = {1,3} 至 int[] one = {1,4} int[] two = {1,3} 这将使该过程加速少量,但不是通过优化排序/搜索逻辑本身.我们所做的就是删除自动装箱和自动拆箱操作.但是,如果你这么大规模地这样做,那么这可以产生实质性的差异. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读