返回信息流要考虑空间复杂度时间复杂度,
我思路是设数组中设定重复2次的数字为a,未出现的数字为b
然后整个数组异或再和0~999异或得到 a^b= x,
由数组求和再减去0~999的求和得到 a - b = y,
然后我解不出来了TAT
不知道思路对不对
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #90484同步于 2016/7/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
1000个数范围[0,999],有2个相同的数,求这个数(已解决)
apig
2016/7/20镜像同步63 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
https://bbs.byr.cn/#!article/Java/51260
类似第3题,你的更简单一些,只重复两次
如果题目要求是数组a[1001], a[i]的范围在[0,999]之间,只有一个数重复两次,那么的你的思路是对的,异或可以,求和也可以
如果题目要求的数组a[n],n!=1001,只有一个数重复两次,那么存在两种情况
n < 1001, 可能[0, 999]中的某些数不存在,那么这种方法就不ok, 可以使用map统计次数,只有次数>1就返回这个数
n > 1001, 这种情况必定存在有[0, 999]存在两个以上的数重复两次,不符合题意
1000个数本就不多,所以时间复杂度和空间复杂度到底啥要求呢?不让用额外空间?O(n)?
【 在 apig 的大作中提到: 】
: 要考虑空间复杂度时间复杂度,
: 我思路是设数组中设定重复2次的数字为a,未出现的数字为b
: 然后整个数组异或再和0~999异或得到 a^b= x,
: ...................
【 在 jh1 的大作中提到: 】
: https://bbs.byr.cn/#!article/Java/51260
: 类似第3题,你的更简单一些,只重复两次
: 如果题目要求是数组a[1001], a[i]的范围在[0,999]之间,只有一个数重复两次,那么的你的思路是对的,异或可以,求和也可以
: ...................
题目意思应该是 1000个数 [0,999] 有一个出现两次, 有一个没出现, 其他只出现一次
我最后拿到的两个条件我解不出来
那就不能用异或 或者 求和来处理了,可以用map统计次数 或者 直接数组统计次数 或者 直接用位bit统计次数
【 在 apig 的大作中提到: 】
:
: 题目意思应该是 1000个数 [0,999] 有一个出现两次, 有一个没出现, 其他只出现一次
: 我最后拿到的两个条件我解不出来
【 在 liyi5133 的大作中提到: 】
: 1000个数本就不多,所以时间复杂度和空间复杂度到底啥要求呢?不让用额外空间?O(n)?
:
我是一个for 得到 a^b = x a - b = y 我解不出a b
不考虑空间的话一个boolean[1000]? 这种当笔试题好像太凑数了...
【 在 liyi5133 的大作中提到: 】
: [md]
: 如果是和1000比的话,我知道一种更少的。
: 以前有道题目是一串数,每个出现3次,只有一个出现1次,找出这个数。
: ...................
敲的好快 -0-
一串数组,其他数重复出现m次,只有一个数出现n次,求这个数(m奇数, m>n)
确实有点像 那种的话都得造m进制数,画状态图简化然后来吧
这题m<n 且规定了数范围 可能我直接绕进去怎么都想用位运算搞不定了
可能你的解法是对的
我后来发现个问题,如果少的那个数和多的那个数有部分位数相同,那么这部分就抵消掉了,这种方法找不回来。
【 在 apig 的大作中提到: 】
:
: 敲的好快 -0-
: 一串数组,其他数重复出现m次,只有一个数出现n次,求这个数(m奇数, m>n)
: ...................
不用异或,用平方和
然后就能算出b^2 - a^2
然后解方程
【 在 apig 的大作中提到: 】
: 要考虑空间复杂度时间复杂度,
: 我思路是设数组中设定重复2次的数字为a,未出现的数字为b
: 然后整个数组异或再和0~999异或得到 a^b= x,
: 由数组求和再减去0~999的求和得到 a
: .........