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

要求O(logn)的复杂度基本就是二分。

分析序列1,1,2,2,3,4,4,5,5

(0,1),(2,3),(5,6),(7,8)各自成对。

0,1  10,11  101,110  111,1000

可以观察出目标的左边可用^异或找出成对的,右边则不行,所以可以据此来二分。

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

 

posted on   greenofyu  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示