您的位置:首页 > 编程语言 > Ruby

数组中只出现一次的两个数字之Ruby版

2014-06-30 12:06 274 查看
<pre name="code" class="ruby"><span class="comment" style="background-color: inherit; line-height: 22.5px; font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 15px; margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0);">问题描述:在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找出这两个数字。</span><span style="background-color: inherit; line-height: 22.5px; font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 15px; margin: 0px; padding: 0px; border: none;">  </span>


$a = [1,2,3,4,6,8,4,3,2,1]

def findtwonotrepeat(a,n)
$temp = 0
for i in 0...a.size
$temp ^= a[i]    #两个只出现一次数字的异或结果保存在temp中
end
for j in 0...1.size
break if ($temp>>j)&1 == 1   #确定第j位为两数字的不同位
end
$pn = 0
$pm = 0
for i in 0...a.size
if (a[i]>>j)&1 == 1     #将数组分成两半,每一半都有一个只出现一次的数字
$pn ^= a[i]
else
$pm ^= a[i]
end
end
end
findtwonotrepeat($a, $a.size)
print $a
print "#{$pn} and #{$pm} are the two not repeat numbers in array.","\n"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: