[解法3]:使用異或
問題1: 找出出現奇數次的兩個數
void findrepeatedtwonumbers(int a, int n, int& no1, int& no2)
// temp的值現為兩個出現奇數次的數的異或
// 找第乙個為1的位
for (j = 0; j < sizeof(int) * 8; j++)
}
// 第j位為1,說明這兩個數字在第j位上是不相同的
// 由此分組即可,乙個分組在此位上為1,另一組在此位上為0;這兩個數分別位於這兩個分組中;
// 對兩個分組中的數分別計算異或,得到的值即為所求的值; 每個分組中除所求的數外,其餘的都出現偶數次;
no1 = 0, no2 = 0;
for (i = 0; i < n; i++)
else // 分組2
} }
程式設計之美 1 5 快速找出故障機器
題目 假設乙個機器只儲存乙個標號為id的記錄,假設每份資料儲存2個備份,這樣就有2個機器儲存了相同的資料。其中id是小於10億的整數 問題1 在某個時間,如果得到乙個資料檔案id的列表。是否能夠快速的找到這個表中僅出現一次的id?即快速找出出現故障的機器儲存的資料id。問題2 如果有兩台機器宕機呢?...
程式設計之美1 5 快速找出故障機器
題目 假設乙個機器只儲存乙個標號為 id的記錄,假設每份資料儲存 2個備份,這樣就有 2個機器儲存了相同的資料。其中id是小於10億的整數 問題1 在某個時間,如果得到乙個資料檔案 id的列表。是否能夠快速的找到這個表中僅出現一次的 id?即快速找出出現故障的機器儲存的資料id。問題2 如果有兩台機...
程式設計之美 1 5 快速找出故障機器
關心資料探勘和搜尋引擎的程式設計師都知道,我們需要很多的計算機來儲存和處理海量資料。然而,計算機難免出現硬體故障而導致網路聯絡失敗或宕機。為了保證搜尋引擎的服務質量,我們需要保證每份資料都有多個備份。簡單期間,我們假設乙個機器僅儲存乙個標號為id的記錄 假設id是小於10億的整數 假設每份資料儲存兩...