異或運算(只出現一次的數字)

2021-10-22 10:08:14 字數 709 閱讀 8162

(leetcode刷題總結)

目錄

位運算(只出現一次的數字) 前言

一、題目示例

二、解題思路

1.異或運算

2.思維解讀:

3.**如下: 總結

很早就學過位運算,但一直沒用應用過,本題使用了異或運算相關性質。

只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

示例 1:

輸入: [2,2,1]

輸出: 1

示例 2:

輸入: [4,1,2,1,2]

輸出: 4

使用異或運算結合律與交換律的性質:

1、將陣列中第乙個數與0異或,得到他本身。

2、繼續與陣列中其他數字挨個異或,

3、最後得到的數字就是出現了一次的數字

解析:有些朋友可能會陷入思維誤區,性質不同異或為1,這裡指的是二進位制形式下的計算(這是位運算),同乙個位上數字相同的都消除了。

class solution {

public:

int singlenumber(vector& nums) { //資料都已經存在陣列中

int sign= 0; //定義標記符號

for(int i=0;i

leetcode 只出現一次的數字(異或運算)

只出現一次的數字 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 這道題有乙個重要條件 出現...

劍指56 陣列中只出現一次的數字 異或 位運算

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。空間複雜度o 1 時間複雜度o n 思路 乙個整型陣列只有乙個數字出現一次 其他出現2次 考慮異或全部得到唯一的這個數字。同理,將問題分組成2組,每組保證有乙個出現1次的數,且每組中其他數都出現2次。考慮通過...

位運算 只出現一次的的數字

異或的兩個值 相同為假,不同為真 交換兩個整數的值時可以不用第三個引數a a b a b b b a b a乙個只出現一次的數字。乙個整型陣列裡除了乙個數字之外,其他的數字都出現了偶數次。請寫程式找出這個只出現一次的數字。int num 0 if array.length 0 return num ...