摘要: 先看一道面试题:长度为n的数组,由数字1到n组成,其中数字a不出现,数字b出现两次,其它的数字恰好出现一次。怎样通过只读遍历一次数组,找出数字a和b。由于只能遍历一次,在遍历数组arr时,算出 a和b的差值,以及a和b的平方差,通过解方程,即可求得a和b。具体做法为:设: s1 = 1 + 2 + ... + n (= n * (n + 1) / 2) s2 = arr[0] + arr[1] + ... + arr[n - 1] r1 = 1 + 4 + ... + n^2 (= n * (n + 1) * (2 * n + 1) / 6) r2 = arr[0]^2 + arr[1]^2. 阅读全文
posted @ 2012-03-20 21:07 flyinghearts 阅读(5513) 评论(0) 推荐(0) 编辑