写点什么

leetcode 540. Single Element in a Sorted Array 有序数组中的单一元素

作者:okokabcd
  • 2022 年 5 月 29 日
  • 本文字数:550 字

    阅读完需:约 2 分钟

leetcode 540. Single Element in a Sorted Array 有序数组中的单一元素

一、题目大意

标签: 查找


https://leetcode.cn/problems/single-element-in-a-sorted-array


给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 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 <= 105

  • 0 <= nums[i] <= 105

二、解题思路

题目中是有序数组,每个元素出现 2 次,假设数组索引 i 是偶数,如果 nums[i] == nums[i+1],说明那个单独出现的元素在 i 的右边;反之在 i 的左边

三、解题方法

3.1 Java 实现

public class Solution {    public int singleNonDuplicate(int[] nums) {        int l = 0;        int r = nums.length - 1;        while (l < r) {            int mid = l + (r - l) / 2;            // 保证mid是偶数            mid = mid / 2 * 2;            if (nums[mid] == nums[mid + 1]) {                l = mid + 2;            } else {                r = mid;            }        }        // 针对只有一个元素的数组,题目中已经给出数组最小长度为1        return nums[l];    }}
复制代码

四、总结小记

  • 2022/5/29 周末也要坚持每日一道 t

发布于: 刚刚阅读数: 4
用户头像

okokabcd

关注

还未添加个人签名 2019.11.15 加入

还未添加个人简介

评论

发布
暂无评论
leetcode 540. Single Element in a Sorted Array 有序数组中的单一元素_LeetCode_okokabcd_InfoQ写作社区