演算法 陣列中只出現一次的數字

2021-09-13 15:46:49 字數 958 閱讀 6761

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

說明:

你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例 1:

輸入: [2,2,1]

輸出: 1

示例 2:

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

輸出: 4

/**

* 我能想到的第乙個方法就是把所有的值當成 map 的key,出現的次數當成value

* 最後次數為 1 的就是那個單個的

*/public int singlenumber(int nums) else

}return map.entryset().stream().filter(r -> r.getvalue() == 1).findfirst().get().getkey();

}/**

* 看到重複元素,本能的想到 set,可以考慮把出現兩次的數字先新增到 set 裡面,然後再移除掉,

* 最後剩下乙個就是單個的值。

*/public int singlenumber1(int nums)

}return set.iterator().next();

}/**

* 異或(^) 運算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1)

* 除了其中乙個數字是一次外,其他的都是兩次,相同的值異或結果為0,用0異或所有的值,

* 最終結果就是那個單個的值。

*/public int singlenumber2(int nums)

return r;

}

演算法 陣列中只出現了一次的數字

乙個整型陣列裡除了兩個數字之外,其他的數字都是出現了兩次。請寫出程式找出這兩個只出現了一次的數字。要求時間複雜度是o n 空間複雜度是o 1 tip1 如果該陣列a中只有乙個數字出現了一次,其他的數字都出現了兩次,那麼求出該數字就很簡單,其值就是 a 0 a 1 a n 1 因此就需要想辦法,將問題...

初級演算法 陣列 五 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。示例 輸入 2,2,1 輸出 1 include include include using namespace std class solution return nums nums.size 1...

陣列中只出現一次的數字

何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。輸入 每個測試案例包括兩行 第一行包含乙個整數n,表示陣列大小。2 n 10 6。第二行包含n個整數,表示陣列元素,元素均為int。輸...