leetcode 陣列獨數問題

2021-10-08 08:41:48 字數 886 閱讀 6390

在刷題的過程中,遇到了一道題。

其題目是

現在有乙個整數型別的陣列,陣列中素只有乙個元素只出現一次,其餘的元素都出現兩次。

注意:你需要給出乙個線性時間複雜度的演算法,你能在不使用額外記憶體空間的情況下解決這個問題麼?

這麼一道題,我是絞盡腦汁也沒想出來。最後去看了看別人的解法,發現自己還是沒辦法看懂。

public static int singlenumber(int a) {

int num = 0;

for(int i=0;i因為在我的印象中,異或就是相同的兩個數為0,不同的兩個數為1,僅此而已。那為什麼,這個**能夠在最後輸出那個單獨的數字呢?

在檢視解答的過程中,有大佬提到了「0異或乙個數為那個數本身」,並且我在一篇部落格中發現異或可以用來做交換。我才發現既然0與任何數異或都為任何數,那些相同的兩個數異或在一起之後會變為零,最終剩下的只有那個單獨的數

我將這部分**,以陣列為[3,2,5,3,2]執行起來,並檢視輸出

3,1,4,7,5

第一步:0^3=0000^0011=0011 3

第二步:3^2=0011^0010= 0001 1

第三步:1^5=0001^0101 =0100 4

第四步:4^3=0100^0011= 0111 7

結果:7^2=0111^0010=0101 5

如果你看到這裡還沒有理解上面的題為什麼最終能夠得到單獨的乙個數的話,那就可以這麼想,將異或想成加法減法,每異或乙個新值就是在原先的基礎上加上那個值,然後等待相同的數去減去這個值。

LeetCode陣列 有效的數獨

有效的數獨 判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格...

leetcode 數獨遊戲

第乙個問題 用程式實現數獨的出題,而不是答題。換句話說就是驗證給定的乙個數獨中的九宮格,該九宮格是否滿足數獨遊戲的規則。數獨遊戲的規則是什麼 每一行沒有重複。每一列沒有重複。每乙個3x3的小格中沒有重複。方法一 一次迭代法 class solution validate a board for in...

LeetCode數獨問題中Bitset的巧妙用處

判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字1 9在每一行只能出現一次。數字1 9在每一列只能出現一次。數字1 9在每乙個以粗實線分隔的3x3宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示例 1 輸入 5...