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

2021-07-05 06:51:58 字數 3321 閱讀 1815

# -*-coding:utf-8-*-

# python2.7

__author__ ='ll_ying'#

找出一組數中只出現一次的元素。注:其它元素都出現過兩次。

classsolution():

defsinglenumber(self

, a):

''':parama:a list of integer

:return:integer

'''returnreduce(lambdax,y:x^y, a)

printsolution().singlenumber((1,2

,3,4

,3,2

,1))

'''陣列中只出現一次的元素其餘的都出現過兩次,使用xor(異或)就很好解決。xor:相同為0,不同為1,這樣將陣列中的相同的數字異或之後,剩餘的數字就是那個單個的數字。異或運算之間可以互相交換,所以異或的順序與結果無關。pythonreduce()方法:reduce(function, iterable[, initializer])第乙個引數為呼叫的函式,參數二為迭代物件,第三個為可選引數,初始值。函式的作用是引數iterable中的item順序迭代呼叫function例:def add(x,y): return x + y>>> reduce(add, range(1, 11))55>>> reduce(add, range(1, 11), 20)75python中實現異或為:^由上面的知識很容易可以解決這個看似複雜的問題。再學習reduce時候遇見幾個和reduce類似的方法:1filter(function, iterable)iterable中的item依次執行function(item),將執行結果為true的返回。型別取決於iterable的型別,如果為string或者元組,則返回相同,此外都為列表。如functionnone,則iterable的所有item都為false,刪除所有元素。例:>>> def f(x): return x % 2 != 0 and x % 3 != 0>>> filter(f, range(2, 25))[5, 7, 11, 13, 17, 19, 23]>>> def f(x): return x != 'a'>>> filter(f, "abcdef")'bcdef2map(function, iterable, ...)iterable中的item依次執行function(item),返回結果為列表。支援多個iterable需要function具有相應數量的引數支援。例:>>> def cube(x): return x*x*x>>> map(cube, range(1, 11))[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]>>> def add(x, y): return x+y>>> map(add, range(8), range(8))[0, 2, 4, 6, 8, 10, 12, 14]'''

找出一組資料中只出現一次的資料

有一組資料,假設除了某乙個元素出現了一次外,其餘元素都出現了兩次,找出這個元素。如 array 在這個陣列中,怎麼找出這個只出現了一次的5呢?依次拿出乙個元素與其他元素進行比較,設定乙個中間變數result,每次讓resul等於該值,根據是否有與其相同的值來改變result的值,最後根據result...

找出陣列中只出現一次的數

今天來看一道有意思的題,看起來很簡單,但是要想到滿足要求的答案沒那麼容易。有乙個非空整形陣列,除了有乙個只出現過一次的數,其他的數都出現且只出現過兩次,現要求找出這個只出現過一次的數。時間複雜度不能超過 o n 而且不能使用額外空間。大概意思就是,比如從 5,5,8,8,6,9,9 陣列中找出 6 ...

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

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