leetcode540 有序陣列中的單一元素

2022-09-21 06:18:09 字數 666 閱讀 5414

題目中很明確的說了,需要o(logn)的演算法,這簡直就是二分的代名詞。

二分的本質是需要去找乙個性質,一半滿足另一半不滿足。

這個性質就是,相等的兩個元素中的第乙個的下表一定是偶數。

當你搜尋到某個下標時,如果它是偶數,那就看它=它的下乙個元素;如果它是奇數,那就它=它的前乙個元素。

又根據異或的性質,偶數和1異或=該數+1,奇數和1異或等於該數-1。

即該陣列的左端滿足nums[mid]nums[mid1],右端不滿足,且要找的那個元素就是第乙個滿足nums[mid]!=nums[mid1]的。

本題中,性質記作「nums[mid]nums[mid^1]」,要找第乙個滿足該條件的。

如果該條件得到滿足,說明mid在後半段,右指標應該收縮到mid的位置,即使用二分法模板1。可得**如下:

public int singlenonduplicate(int nums) 

return nums[r];

}

剛剛既然說到了異或,那麼其實異或還有乙個很有意思的性質:

aa=0,0a=a

則有乙個o(n)的演算法:

public int singlenonduplicate(int nums)
just a joke!2022情人節快樂!

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 空間複雜度中執行。這道題非常...

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 空間複雜度中執行。由於只有乙...