如何快速比较两个数值列表是否相等?

发布于 2022-09-05 23:30:42 字数 132 浏览 8 评论 0

项目中遇到一个问题, 大概抽象成下面这个问题:
int[] a = {1, 2, 3};
int[] b = {2, 1, 3};
怎么快速比较a和b里面的值是否相同? 有没有什么公式能直接算出来两个数组的某种哈希值, 然后再比较?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怪我太投入 2022-09-12 23:30:42

先比较a, b的个数是否相同;若个数不同,则不相同
若个数相同,则把a, b两个数组排序,循环数组a,每一项与b对比,若不相同,则直接返回false;不挨个儿对比的话,就先把a,b排序,然后拼接成两个字符串a_str, b_str,再对字符串比较

if( a.length!=b.length ){
    return false;
}else{
    sort(a);
    sort(b);
    for(i=0, len=a.length; i<len; i++){
        if( a[i]!=b[i] ) return false;
    }
    return true;
}
一生独一 2022-09-12 23:30:42

先判断个数是否相同;
建个set,遍历a,全丢进set,遍历b,挨个判断b元素是否在set中存在,如果有不存在的则说明不相同,整体时间复杂度O(1);
如果有重复元素,set里的对象加counta和countb记录a和b个元素数,最后再遍历一遍set对比counta,countb是否相同,整体时间复杂度也为O(1);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文