## 540. Single Element in a Sorted Array

You are given a sorted array consisting of only integers where every element appears exactly twice, except for one element which appears exactly once. Find this single element that appears only once.

Follow up: Your solution should 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`

## Rust Solution

``````struct Solution;

impl Solution {
fn single_non_duplicate(nums: Vec<i32>) -> i32 {
let n = nums.len();
let mut l = 0;
let mut r = n - 1;
while l < r {
let mut m = l + (r - l) / 2;
if m % 2 == 1 {
m -= 1;
}
if nums[m + 1] == nums[m] {
l = m + 2;
} else {
r = m;
}
}
nums[l]
}
}

#[test]
fn test() {
let nums = vec![1, 1, 2, 3, 3, 4, 4, 8, 8];
let res = 2;
assert_eq!(Solution::single_non_duplicate(nums), res);
let nums = vec![3, 3, 7, 7, 10, 11, 11];
let res = 10;
assert_eq!(Solution::single_non_duplicate(nums), res);
}
``````

Having problems with this solution? Click here to submit an issue on github.