当前位置:网站首页>【LeetCode每日一题】——540.有序数组中的单一元素
【LeetCode每日一题】——540.有序数组中的单一元素
2022-08-04 16:55:00 【IronmanJay】
一【题目类别】
- 二分查找
二【题目难度】
- 中等
三【题目编号】
- 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 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
- 0 < = n u m s [ i ] < = 1 0 5 0 <= nums[i] <= 10^5 0<=nums[i]<=105
七【解题思路】
- 主要还是二分查找的思路
- 只是判断条件有所变化,注意读题目:如果某一部分之前没有单个元素,那么此部分长度肯定为偶数,索引也就是奇数,反之长度就为奇数,索引也就是偶数
- 所以我们还是得到中间元素的索引,如果索引为奇数,那么说明前面都是成对出现的,也就没有单一元素,但是还需要判断后一个和前一个是否相等,也就是判断是否是一堆,如果是的话,说明左面也就没有单一元素,那么修改左索引下标向右
- 如果索引为偶数,说明左面部分肯定有单个元素,修改右索引下标向左
- 最后还需要注意while的判断条件为左索引要小于右索引,不能是小于等于,否则会死循环
八【时间频度】
- 时间复杂度: O ( l o g 2 N ) O(log_{2}N) O(log2N),其中 N N N为数组元素个数
- 空间复杂度: O ( 1 ) O(1) O(1)
九【代码实现】
- Java语言版
package BinarySearch;
public class p540_SingleElementInSortedArray {
public static void main(String[] args) {
int[] nums = {
1, 1, 2, 3, 3, 4, 4, 8, 8};
int res = singleNonDuplicate(nums);
System.out.println("res = " + res);
}
public static int singleNonDuplicate(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (mid % 2 == 1) {
mid--;
}
if (nums[mid] == nums[mid + 1]) {
left = mid + 2;
} else {
right = mid;
}
}
return nums[left];
}
}
- C语言版
#include<stdio.h>
int singleNonDuplicate(int* nums, int numsSize)
{
int left = 0;
int right = numsSize - 1;
while (left < right)
{
int mid = left + (right - left) / 2;
if (mid % 2 == 1)
{
mid--;
}
if (nums[mid] == nums[mid + 1])
{
left = mid + 2;
}
else
{
right = mid;
}
}
return nums[left];
}
/*主函数省略*/
十【提交结果】
Java语言版

C语言版

边栏推荐
猜你喜欢
随机推荐
icu是哪个国家的域名?icu是什么域名?
跨链桥已成行业最大安全隐患 为什么和怎么办
Json的FastJson与Jackson
WEB 渗透之逻辑漏洞
不需要服务器,教你仅用30行代码搞定实时健康码识别
转型阵痛期,好未来减亏容易增收难?
HCIP笔记(7)
服装店如何利用好积分?
Analysis of the gourd baby
从正负样本解耦看对比学习为何需要large batch size训练Ddcoupled Contrastive learning (DCT)
全世界国家和地区国家顶级域名对照表
Minecraft HMCL 使用认证服务器LittleSkin进行登录
人造肉在中国还有未来吗?
Minecraft 我的世界 .minecraft下的各个文件夹的用处
Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
智慧场馆的功能有哪些
图扑软件与华为云共同构建新型智慧工厂
《分布式云最佳实践》分论坛,8月11日深圳见
移动海信IP102H_905L3-B_线刷固件包
适配器模式









