找出一組數中兩個不同的數

2021-10-11 07:50:48 字數 1639 閱讀 9764

1.題目描述: 有乙個陣列其中只有乙個數出現了一次,其餘的數都出現了兩次,請找出這乙個數。

思路: 看到這個題我們不難想出利用異或,我們知道兩個相同的數異或結果為0,而0異或任何數結果是任何數。所以來看**:

#define _crt_secure_no_warnings 1

#include

#include

intonlyonce

(int

*sor,

int n)

return t;

}int

main()

;int n =

sizeof

(arr)

/sizeof

(int);

printf

("%d\n"

,onlyonce

(arr, n));

system

("pause");

return0;

}

結果展示:

緊接著來看乙個上面題的延申。

題目描述:有一組數其中有兩個數隻出現了一次,其餘的數都出現了兩次,請找出只出現一次的這兩個數。

思路:首先我們有了上一道題的經驗之後不難想出這個題還是用異或來做,但是呢將所有的數異或之後會發現只是找的了兩個不同數字異或之後的數,緊接著就不難想出如果將這不同的兩個數分開不就好了 。

那麼怎樣分開這兩個數呢這就要求我們有一定的經驗了:

比如 6和5

//找出第乙個為 1 的位

while

((t &1)

==0) ret[0]

= ret[1]

=0;//分別得到這兩個數

for(i =

0; i < n; i++

)else

}return ret;

}int

main()

;int ret[2]

=;int n =

sizeof

(arr)

/sizeof

(arr[0]

);dif(arr, n, ret)

;for

(int i =

0; i <2;

++i)

system

("pause");

return0;

}結果展示:

程式設計實現 找出一組資料中兩個只出現一次的數字

1.乙個陣列中只有兩個數字是出現一次,其他所有數字都出現了兩次。找出這兩個只出現一次的數字,程式設計實現。2 程式 define crt secure no warnings include include void findtwonumber int arr,int sz 之所以ret中會出現1,...

求陣列中兩個不同的數

題目 在給定int陣列中存在著兩個不同的數字,而其他數字都存在另乙個數與它對應 相同 求出此陣列兩個不同的數字。解法 熟悉c 位操作的同學知道一種位操作 異或 能夠消除相同的資料,規則是 1 1 0 1 0 1 0 1 1 0 0 1 顯而易見,位上相同異或會置0,位上不相同會置1,所以相同的數字在...

找出一組數中只出現一次的元素

coding utf 8 python2.7 author ll ying 找出一組數中只出現一次的元素。注 其它元素都出現過兩次。classsolution defsinglenumber self a parama a list of integer return integer returnr...