如何快速比较两个数值列表是否相等?
项目中遇到一个问题, 大概抽象成下面这个问题:
int[] a = {1, 2, 3};
int[] b = {2, 1, 3};
怎么快速比较a和b里面的值是否相同? 有没有什么公式能直接算出来两个数组的某种哈希值, 然后再比较?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
项目中遇到一个问题, 大概抽象成下面这个问题:
int[] a = {1, 2, 3};
int[] b = {2, 1, 3};
怎么快速比较a和b里面的值是否相同? 有没有什么公式能直接算出来两个数组的某种哈希值, 然后再比较?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
先比较a, b的个数是否相同;若个数不同,则不相同
若个数相同,则把a, b两个数组排序,循环数组a,每一项与b对比,若不相同,则直接返回false;不挨个儿对比的话,就先把a,b排序,然后拼接成两个字符串a_str, b_str,再对字符串比较
先判断个数是否相同;
建个set,遍历a,全丢进set,遍历b,挨个判断b元素是否在set中存在,如果有不存在的则说明不相同,整体时间复杂度O(1);
如果有重复元素,set里的对象加counta和countb记录a和b个元素数,最后再遍历一遍set对比counta,countb是否相同,整体时间复杂度也为O(1);