LeetCode137題 只出現一次的數字

2021-10-18 07:39:16 字數 879 閱讀 2166

題目描述

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

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

示例 1:

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

輸出: 3

示例 2:

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

輸出: 99

解題思路

我們將陣列排序,依次判斷當前數是不是等於它的下乙個數(週期為3,因為除所找數字外,所有數字都有三個),如果等於則不會是我們要找的數,繼續判斷直至迴圈整個陣列,當迴圈之末尾仍未找到我們的數時,則要找的數為最後乙個數。(此外,由於我們計算的l是預設以3n+1,且n>0計算的,所以需要單獨判斷只有乙個待找數字的情況)

class

solution

:def

singlenumber

(self, nums: list[

int])-

>

int:

nums.sort(

) l=

len(nums)//3

if l==0:

return nums[0]

for i in

range

(l):

if nums[

3*i]

==nums[

3*i+1]

:if i==l-1:

return nums[

3*i+3]

continue

else

:return nums[

3*i]

Leetcode137 只出現一次的數字

題目描述 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,3,2 輸出 3 示例 2 輸入 0,1,0,1,0,1,99 輸出 99 思路 對數字中數...

leetcode 137 只出現一次的數字 II

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?這種純數字計算的問題,如果我們只用加減乘除就能做出來,那leetcode就太low了,這種問題,應該深入到位級別運算。思考,將...

leetcode137 只出現一次的數字詳解

原題連線 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,3,2 輸出 3 示例 2 輸入 0,1,0,1,0,1,99 輸出 99 3 函式f實現的...