540 有序陣列中的單一元素

2021-08-19 04:33:02 字數 561 閱讀 2501

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

示例 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. 首先觀察題目,這是有序陣列,而且難點是對時間複雜度和空間複雜度有要求。

2. 時間複雜度是logn,第一反應,二分搜尋。

3. 難點是,二分搜尋後怎麼判斷是左半邊還是右半邊。解決方式是通過mid的奇偶性。具體怎麼通過奇偶性判斷,請通過**來理解。

class solution 

else if(nums[mid] == nums[mid-1])

else

return nums[mid];

}return nums[left];

}};

540 有序陣列中的單一元素

給定乙個只包含整數的有序陣列,每個元素都會出現兩次,唯有乙個數隻會出現一次,找出這個數。示例 1 示例 2 注意 您的方案應該在 o log n 時間複雜度和 o 1 空間複雜度中執行。1.令 index 為 single element 在陣列中的位置。在 index 之後,陣列中原來存在的成對狀...

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