leetCode 540 有序陣列中的單一元素

2021-10-10 11:39:32 字數 655 閱讀 7462

給定乙個只包含整數的有序陣列,每個元素都會出現兩次,唯有乙個數隻會出現一次,找出這個數。

示例 1:

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

輸出: 2

示例 2:

輸入: [3,3,7,7,10,11,11]

輸出: 10

注意: 您的方案應該在 o(log n)時間複雜度和 o(1)空間複雜度中執行。

由於只有乙個數字出現一次所以整個陣列長度為奇數,而且重複數字是成對出現的所以只出現一次的數字下標index為偶數,我們可以通過二分法進行查詢:

class

solution

else

}return nums[l];}

}

另一種寫法,保持mid為偶數判斷nums[mid]與nums[mid+1]是否相等,如果不相等說明只出現一次的數字在mid之前,如果相等則說明只出現一次的數字在mid+2之後。

class

solution

if(nums[mid]

!= nums[mid+1]

)else

}return nums[l];}

}

Leetcode540 查詢有序陣列中的單一元素

給定乙個只包含整數的有序陣列,每個元素都會出現兩次,唯有乙個數隻會出現一次,找出這個數。示例 1 輸入 1,1,2,3,3,4,4,8,8 輸出 2 示例 2 輸入 3,3,7,7,10,11,11 輸出 10 注意 您的方案應該在 o log n 時間複雜度和 o 1 空間複雜度中執行。解題思路 ...

LeetCode 540 有序陣列中的單一元素

給定乙個只包含整數的有序陣列,每個元素都會出現兩次,唯有乙個數隻會出現一次,找出這個數。示例 1 輸入 1,1,2,3,3,4,4,8,8 輸出 2 示例 2 輸入 3,3,7,7,10,11,11 輸出 10 注意 您的方案應該在 o log n 時間複雜度和 o 1 空間複雜度中執行。這道題非常...

leetcode540 有序陣列中的單一元素

題目中很明確的說了,需要o logn 的演算法,這簡直就是二分的代名詞。二分的本質是需要去找乙個性質,一半滿足另一半不滿足。這個性質就是,相等的兩個元素中的第乙個的下表一定是偶數。當你搜尋到某個下標時,如果它是偶數,那就看它 它的下乙個元素 如果它是奇數,那就它 它的前乙個元素。又根據異或的性質,偶...