swift演算法 只出現一次的數字

2021-09-25 02:44:17 字數 813 閱讀 4460

1、描述

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

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

輸出:1

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

輸出:4

2、演算法

1)利用陣列

思想:利用陣列,遍歷nums中的每乙個元素,如果是新出現則加入陣列,如果已經在列表則刪除

時間複雜度:o(n^2)

func singlenumber(_ nums: [int]) -> int 

}else

}return temp.first!

}

2)雜湊表

思想:利用字典記錄每個數字出現的次數,最後遍歷陣列找出只出現一次的數返回         

時間複雜度:o(n)

func singlenumber(_ nums: [int]) -> int else

}for (key, value) in temp else

}return 0

}

3)位運算--異或

思想:由於 0^a = a,a^a = 0 而陣列中除了乙個數字是只出現一次的,其他數字均出現兩次,所以可以用異或來解決問題

時間複雜度: o(n)

func singlenumber(_ nums: [int]) -> int 

}return temp

}

演算法 只出現一次的數字

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 ...