永发信息网

算法问题,怎么判断几个数同时相等?忽略顺序,如2 2 3 5和5 2 3 2相等。如果想到排序后比

答案:3  悬赏:30  手机版
解决时间 2021-03-27 00:59
  • 提问者网友:不要迷恋哥
  • 2021-03-26 18:10
算法问题,怎么判断几个数同时相等?忽略顺序,如2 2 3 5和5 2 3 2相等。如果想到排序后比
最佳答案
  • 五星知识达人网友:雾月
  • 2021-03-26 19:46
开一个计数数组vis[i],一开始清零,然后输入第一个数列,每输入一个数x,就vis[x]++。这样vis[i]代表i这个数字出现的次数。然后输入第二个数列,每输入一个数x,就vis[x]--,处理过程中检查vis[x]是不是负数,如果是则说明两个数列不相等,处理完之后,若vis[i]中全为0,说明相等。时间复杂度O(N),空间复杂度O(maxnum)
当数据的数值范围不大的时候可以使用这个方法。追问你的想法和我一样, 但我就觉得这种方法除了效率问题, 还有一定局限性, 如果是浮点或字符串等其它数据类型, 可能就比较麻烦. 如果能生成一种类似md5之类的"指纹", 但数字顺序不影响结果, 那就完美了追答浮点或者字符串的话的确没办法,只能用集合最小表示法来搞,也就是排序,另外MD5这个就算数列不同算出来的结果也是可能相同的哦~
你的问题实际上就是一个离散问题,用离散的方法来解决应该是最好的了。追问之前不知道怎么把这个问题表述清楚, 现在想想其实就是判断两个集合相等的问题, 刚刚网上搜了一下, 也没找到期望的算法, 先结了, 谢谢问答追答你这个和集合还有点不一样,你的问题里面还允许有相同的数字出现吧
全部回答
  • 1楼网友:舍身薄凉客
  • 2021-03-26 21:47
先冒泡法排序,然后按数组顺序挨个比较
  • 2楼网友:北城痞子
  • 2021-03-26 20:33
用for循环嵌套,第一个设置为循环遍历前一个数组,每次记录一个数a[i];内层循环遍历后一个数组,把得到的数与a[i]比较如果相同就回到外层循环
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯