540. 有序数组中的单一元素

题目链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array/

二分法
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户
内存消耗:46.9 MB, 在所有 Java 提交中击败了14.20% 的用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int singleNonDuplicate(int[] nums) {
int left = 0, right = nums.length - 1, mid;
while(left < right) {
mid = left + right >> 1;
// mid是偶数时 mid+1 = mid^1
// mid是奇数时 mid-1 = mid^1
if(nums[mid] == nums[mid^1]) {
left = mid + 1;
} else {
right = mid;
}
}
return nums[left];
}
}

执行用时:152 ms, 在所有 Swift 提交中击败了84.62% 的用户
内存消耗:17.1 MB, 在所有 Swift 提交中击败了7.69% 的用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
func singleNonDuplicate(_ nums: [Int]) -> Int {
guard nums.count > 1 else {
return 1
}
if nums[0] != nums[1] {
return nums[0]
}
var cur = 0, once = 0
for num in nums {
if cur == 0 {
cur += num
once = cur
} else if cur - num == 0{
cur -= num
} else {
once = cur
break
}
}
return once
}
}

for循环 步长2

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
func singleNonDuplicate(_ nums: [Int]) -> Int {
let n = nums.count
for i in stride(from: 0, to: n-1, by: 2) {
if nums[i] != nums[i+1] {
return nums[i]
}
}
return nums[n-1];
}
}


540. 有序数组中的单一元素
https://pisces34.github.io/2022/02/14/leetcode/540/
发布于
2022年2月14日
许可协议