本文準備講解1個簡單的算法編程問題, 這個算法編程問題來自LintCode平臺。不了解.LintCode平臺的讀者可以閱讀筆者文章(在線編程平臺推薦-LeetCode)。問題的英文版本描述如下:
Single Number III
Given 2*n + 2 numbers, every number occurs twice except two, find them.
Example
Given [1,2,2,3,4,4,5,3] return 1 and 5
單次出現(xiàn)的數(shù)
給出2*n + 2個數(shù)字,除其中兩個數(shù)字之外其他每個數(shù)字均出現(xiàn)兩次,找到這兩個數(shù)字。
樣例
給出[1,2,2,3,4,4,5,3],返回 1和5
該問題的標準算法需要用到位處理方案,對任何數(shù)字A而言 A 位異或 A? 會將得到 0?,F(xiàn)在公布1種不做位處理的算法方案。這種非位處理方案的缺點是速度較慢,閱讀非位處理方案比較容易。好像用高級語言和機器語言做同樣1個任務(wù),高級語言有高級語言的優(yōu)點,機器語言有機器語言的長處。
非位處理的算法