每日演算法 只出現一次的數字

2021-10-06 03:32:53 字數 1140 閱讀 2682

目錄

題目1 - 只出現一次

解題思路 **

題目2  - 目標數出現一次,其餘出現3次

解題思路

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

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

示例 1:

輸入: [2,2,1]

輸出: 1

示例 2:

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

輸出: 4

應用邏輯運算,規律如下:

1、異或:兩個相同的數異或結果為0,0和任何數異或為那個數本身:a^a = 0, 0^b = b;所以對於出現偶數次的元素,可以使用這個異或的規律。

根據題中設定,將所有數字依次進行異或,最後的結果一定是只出現了一次的那個數字。

class solution 

return res;

}}

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

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

示例 1:

輸入: [2,2,3,2]

輸出: 3

示例 2:

輸入: [0,1,0,1,0,1,99]

輸出: 99

元素出現偶數次的時候適合用異或來處理,奇數次則不適合用異或來處理。針對奇數次,可以考慮使用位運算。

題目二方式2:設定兩個變數,seenonce和seentwice,來區分出現1次和出現3次的數字,並且更新變數的規則為:

更新seenonce,僅當seentwice沒有變化,即該數連出現2次都沒有,就更不可能出現3次了;

更新seentwice,僅當seenonce沒有變化,即該數還是初始的狀態,然後出現第2次了,需要更新。

不懂,參考力扣答案。

演算法 只出現一次的數字

1.leetcode136 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。要求時間複雜度o n 空間複雜度o 1 示例 輸入 4,1,2,1,2 輸出4 1 面試官不想要的答案 建字典 排序。2 面試官想要的答案 位運算。思路 如果我們對 0 ...

只出現一次的數字

1.乙個整型陣列,有乙個數字出現一次,其餘數字出現兩次,找出這個只出現一次的數字。解題思路 異或運算性質 兩個相同的數字異或得0,0與乙個數字異或得數字本身,而且異或運算是滿足交換律的 陣列元素按位異或,交換律可以想象成相同的數字參與運算的時候是相鄰的 所有出現兩次的數字異或之後得0,最後剩餘的是0...

只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4核心思想 對list排序,然後遍歷 class ...