ID | Title | Difficulty | |
---|---|---|---|
Loading... |
540. Single Element in a Sorted Array
Medium
LeetCode
Array, Binary Search
Problem
You are given a sorted array consisting of only integers where every element appears exactly twice, except for one element which appears exactly once.
Return the single element that appears only once.
Your solution must run in O(log n) time and O(1) space.
Example 1:
Input: nums = [1,1,2,3,3,4,4,8,8]
Output: 2
Example 2:
Input: nums = [3,3,7,7,10,11,11]
Output: 10
Constraints:
- 1 <= nums.length <= 10^5
- 0 <= nums[i] <= 10^5
Code
class Solution {
public int singleNonDuplicate(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left + 1 < right) {
int mid = (left + right) / 2;
int num = nums[mid];
if (num != nums[mid - 1] && num != nums[mid + 1]) return num;
if (mid % 2 == 0) {
if (num == nums[mid - 1]) {
right = mid;
} else {
left = mid;
}
} else {
if (num == nums[mid - 1]) {
left = mid;
} else {
right = mid;
}
}
}
// [1,2,2,3,3]
if (left == 0) return nums[0];
// [1,1,2]
return nums[right];
}
}
按 <- 键看上一题!
539. Minimum Time Difference
按 -> 键看下一题!
541. Reverse String II