給定乙個只包含整數的有序陣列,每個元素都會出現兩次,唯有乙個數隻會出現一次,找出這個數。
示例 1:
示例 2:
注意: 您的方案應該在 o(log n)時間複雜度和 o(1)空間複雜度中執行。
1.令 index 為 single element 在陣列中的位置。在 index 之後,陣列中原來存在的成對狀態被改變。如果 mid = left + (right - left) / 2 為偶數,並且 mid + 1 < index,那麼 nums[mid] == nums[mid + 1];如果m + 1 >= index,那麼 nums[mid] != nums[mid + 1]。
2.所以,如果 nums[mid] == nums[mid + 1],那麼 index 所在的陣列位置為 [mid + 2, right],此時令 left = mid + 2;如果 nums[mid] != nums[mid + 1],那麼 index 所在的陣列位置為 [left, mid],此時令 right = mid。
3.一旦 left == right,則當前搜尋空間為 1 個元素,那麼該元素為單個元素,我們將返回它。
class
solution
if(nums[mid]
== nums[mid+1]
)else
}return nums[left];}
};
時間複雜度:o(logn)
空間複雜度:o(1)
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 空間複雜度中執行。解題思路 1....
540 有序陣列中的單一元素
給定乙個只包含整數的有序陣列,每個元素都會出現兩次,唯有乙個數隻會出現一次,找出這個數。注意 您的方案應該在 o log n 時間複雜度和 o 1 空間複雜度中執行。示例 1 輸入 1,1,2,3,3,4,4,8,8 輸出 2 示例 2 輸入 3,3,7,7,10,11,11 輸出 10 因為方案應...
540 有序陣列中的單一元素
假設只出現一次的元素位於下標 x,由於其餘每個元素都出現兩次,因此下標 xx 的左邊和右邊都有偶數個元素,陣列的長度是奇數。由於陣列是有序的,因此陣列中相同的元素一定相鄰。對於下標 x左邊的下標 y,如果 nums y nums y 1 nums y nums y 1 則 y一定是偶數 對於下標 x...