【从零开始的LeetCode-算法】540. 有序数组中的单一元素

给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。

请你找出并返回只出现一次的那个数。

你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。

示例 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 <= 10^5
  • 0 <= nums[i] <= 10^5

我的解答

java 复制代码
class Solution {
    public int singleNonDuplicate(int[] nums) {
        int l = 0,r = nums.length - 1;
        // 因为要求时间复杂度为 O(log n) ,所以使用二分查找法
        while(l < r){
            int mid = (r - l) / 2 + l;
            if(mid % 2 != 0) mid--;
            if(nums[mid] == nums[mid + 1] ){
                l= mid + 2;
            } else{
                r = mid;
            }
        }
        return nums[l];
    }
}
相关推荐
NAGNIP8 分钟前
Hugging Face 200页的大模型训练实录
人工智能·算法
Swift社区10 分钟前
LeetCode 457 - 环形数组是否存在循环
算法·leetcode·职场和发展
天远云服18 分钟前
Go 语言实战:构建高并发天远“全国自然人人脸比对 V3”微服务网关
java·大数据·微服务·golang
PPPPickup23 分钟前
easychat项目复盘---管理端系统设置
java·开发语言·前端
挖矿大亨28 分钟前
C++中的this指针
java·开发语言·c++
sheji341634 分钟前
【开题答辩全过程】以 共享单车管理系统为例,包含答辩的问题和答案
java
2401_8772742442 分钟前
2025数据结构实验八:排序
数据结构·算法·排序算法
北北~Simple43 分钟前
接口调不通的情况
java
J2虾虾1 小时前
空间矢量数据结构及其表达
算法
Neil今天也要学习1 小时前
永磁同步电机无速度算法--永磁同步电机转子位置精确估计的误差抑制方法
算法