有這樣乙個陣列,它包含 1 - n 中的 n - 1 個數,缺少的那個數不知道,怎樣才能找到那個數?
這裡有兩種方法實現上述問題。
1.對所有數求和之後用原有的總和去減即可
2.利用異或運算 -- 由於異或的原理是相同則為0,所以,首先異或1到n中的每個數,接著利用所得到的結果異或陣列中的 n - 1 個數,最終得到的那個數就一定是缺少的那個數
讓我們看下實現**:
#include int main(int argc, char *argv)
; int array_sum = 0, sum, i;
sum = (1 + 15) * 15 / 2;
for(i = 0; i < 15; i++)
printf("缺少的那個數是:%d\n", sum - array_sum);
int or = 0, result;
for(i = 1; i < 14; i = i + 2)
or ^= 15;
for(i = 0; i < 13; i = i + 2)
or ^= test_array[14];
printf("缺少的那個數是:%d\n", or);
}
得到的結果如下:
異或運算對待數字運算的效率非常高,我們在平時的操作中可以嘗試的去應用異或操作,能得到更高的解題效率。
尋找缺失的數
有一組數字,從1到n,中減少了乙個數,順序也被打亂,放在乙個n 1的陣列裡 請找出丟失的數字,最好能有程式,最好演算法比較快 btw1 有很多種方法的哦,據說o n 的方法就不止一種 btw2 擴充套件問題,如果丟失了2個數字呢?btw3 一定要小心不要溢位,嗯,面試者有時候不會提醒你的 btw4 ...
查詢缺失的整數
一 有99個不重複的正整數組成的無序陣列,數值範圍是1 100,求出缺失的乙個1 100中的正整數。解 1.對1 100這100個數字求和,得到sum 2.用sum依次減去無序陣列中的每個值,最後sum的值就是缺失的那個正整數。public static int findnum int arr,in...
查詢表的缺失範圍
有表如下 go 物件 table dbo t1 指令碼日期 12 21 2008 22 29 59 set ansi nulls on goset quoted identifier on gocreate table dbo t1 col1 int not null,primary key clu...