【从零开始的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];
    }
}
相关推荐
小王C语言2 分钟前
【基础IO】————简单设计一下libc库
前端·数据结构·算法
亦复何言??3 分钟前
BeyondMimic 论文解析
人工智能·算法·机器人
WolfGang0073217 分钟前
代码随想录算法训练营 Day20 | 回溯算法 part02
算法
YXXY3139 分钟前
前缀和算法
算法
客卿1239 分钟前
滑动窗口--模板
java·算法
_日拱一卒27 分钟前
LeetCode:滑动窗口的最大值
数据结构·算法·leetcode
zjjsctcdl32 分钟前
java与mysql连接 使用mysql-connector-java连接msql
java·开发语言·mysql
codeの诱惑38 分钟前
推荐算法(一):数学基础回顾——勾股定理与欧氏距离
算法·机器学习·推荐算法
落樱弥城38 分钟前
Vulkan Compute 详解
算法·ai·图形学
Book思议-39 分钟前
【数据结构】字符串模式匹配:暴力算法与 KMP 算法实现与解析
数据结构·算法·kmp算法·bf算法