LeetCode刷题笔记 540. 有序数组中的单一元素

给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。

 

示例 1:

输入: nums = [1,1,2,3,3,4,4,8,8]
输出: 2
示例 2:

输入: nums = [3,3,7,7,10,11,11]
输出: 10
 

提示:

1 <= nums.length <= 105
0 <= nums[i] <= 105

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array


解法一(二分法):

复制代码
 1 class Solution {
 2 public:
 3     int singleNonDuplicate(vector<int>& nums) {
 4          int start = 0, end = nums.size() - 1;
 5 
 6          while (start < end) {
 7              int mid = start + (end - start) / 2;
 8              if (mid & 0x01) --mid;
 9 
10              if (nums[mid] == nums[mid + 1]) {
11                  start += 2;
12              } else {
13                  end = mid;
14              }
15          }
16          return start;
17     }
18 };
复制代码

解法二(位运算):

复制代码
 1 class Solution {
 2 public:
 3     int singleNonDuplicate(vector<int>& nums) {
 4         int res = 0;
 5         for (int x : nums) {
 6             res ^= x;
 7         }
 8 
 9         return res;
10     }
11 };
复制代码

 

posted @   仓隽  阅读(45)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示