当前位置:网站首页>540. Single element in ordered array
540. Single element in ordered array
2022-07-02 22:17:00 【_ Alkaid_】
difficulty : secondary
Catalog
3、 Extreme situation resolution
2、 Time complexity and Spatial complexity
One 、 Problem description
I'm going to use LeetCode The description above .
Give you an ordered array of integers only , Each of these elements will appear twice , Only one number will appear once . Please find and return the number that only appears once .
The solution you design must meet
Time complexity and
Spatial complexity .
Here is an example :

Tips :
1 <= nums.length <= 1050 <= nums[i] <= 105
Two 、 Ideas
1、 Their thinking
1. Train of thought
The requirements given in the title here are :
Time complexity -
Spatial complexity
Obviously, you need to use Two points search To solve the problem .
The title says Ordered array And Each element appears twice , Only one number will appear once . Then look at the example and we can find : Set the current subscript to x
- In the presence of Unique number Before , When x For even when , It must be Satisfy nums[ x ] = nums[ x + 1 ], if x Is odd , You must be satisfied nums[ x ] = nums[ x - 1 ].
- There is Unique number after , When x For even when , It must be Satisfy nums[ x ] = nums[ x - 1 ], if x Is odd , You must be satisfied nums[ x ] = nums[ x + 1 ].
Therefore, we can proceed according to the above conditions Dichotomous condition The judgment of the , because Will only appear One Unique number , So the array nums It must be the size of Odd number .
Let's assume that the current subscript is x :
- If x Is odd , Then with x The number on the left is equal , It's not equal Then the unique number is mid Left side , equal shows Unique number stay x To the right of .
- If x It's even , Then with x The number on the right is equal , It's not equal Then the unique number is mid Left side , equal Then the unique number is x To the right of .
According to the above conditions , You can write a binary search , What we use here is Exclusive or ( ^ ) To distinguish the current mid Of Parity , It's really clever .
2. Train of thought two
Here's what I think , Search for two elements every time you jump , Until you find nums[ x ] != nums[ x + 1 ] When , that nums[ x ], It must be that The only element .
2、 Extreme case judgment
- For method two : What needs to be noted here is , Judge the condition Cannot let subscript x + 1 Transboundary , Then you can't judge the last element , And can't judge nums size by 1 The situation of .
3、 Extreme situation resolution
- It can be found that if the judgment comes to the end , If you don't find the only element , Then the only element can only be the last ; If there is only one element , Then the only element is also the last element . So here's the solution , Finally, directly return nums[ nums.size() - 1 ] , that will do .
3、 ... and 、 Problem solving
1、 Code implementation
1. Method 1
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int left = 0, right = nums.size() - 1;
while (left < right) {
// Every time I find left And right The number in the middle Judge
int mid = (right - left) / 2 + left;
// Here we use and 1 Exclusive or It's perfect
// because If mid Is odd Then compare with the number on the left , If mid It's even Then compare with the number on the right
// The dichotomy here is : Two numbers are equal Then it must be mid A unique number appears on the right
if (nums[mid] == nums[mid ^ 1]) {
left = mid + 1;
}
// If it's not equal shows The order must have been disrupted on the left .
else {
right = mid;
}
}
return nums[left];
}
}; 
2. Method 2
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int numsLength = nums.size();
for(int i = 0; i < numsLength - 1; i += 2){
if(nums[i] == nums[i+1]){
continue;
}else{
return nums[i];
}
}
return nums[numsLength - 1];
}
};
2、 Time complexity and Spatial complexity
1. Method 1
Time complexity :
Spatial complexity :
2. Method 2
Time complexity :
Spatial complexity :
边栏推荐
- [shutter] shutter layout component (fractionallysizedbox component | stack layout component | positioned component)
- sql service 截取字符串
- [shutter] shutter layout component (physicalmodel component)
- 【剑指 Offer】57. 和为s的两个数字
- Unity3d learning notes 4 - create mesh advanced interface
- kubernetes资源对象介绍及常用命令(四)
- 地理探测器原理介绍
- GEE:(二)对影像进行重采样
- About test cases
- 【剑指 Offer】56 - I. 数组中数字出现的次数
猜你喜欢

LightGBM原理及天文数据中的应用

Basic concepts of image and deep understanding of yuv/rgb

MySQL learning record (4)
![[staff] Sibelius 7.5.1 score software installation (software download | software installation)](/img/1a/4932a7931c54248c065cf8a1462d34.jpg)
[staff] Sibelius 7.5.1 score software installation (software download | software installation)

*C语言期末课程设计*——通讯录管理系统(完整项目+源代码+详细注释)

Browser - clean up the cache of JS in the page

关于测试用例

Scrcpy this software solves the problem of sharing mobile screen with colleagues | community essay solicitation
![[shutter] shutter resource file use (import resource pictures | use image resources)](/img/e9/94ae2e3ee315f490eb3cf14bcf2e49.jpg)
[shutter] shutter resource file use (import resource pictures | use image resources)

MySQL learning record (7)
随机推荐
The failure rate is as high as 80%. What should we do about digital transformation?
一周生活
Try to get property'num for PHP database data reading_ rows' of non-object?
地理探测器原理介绍
MySQL inserts Chinese data and reports an error. Set the default collation
Pip install whl file Error: Error: … Ce n'est pas une roue supportée sur cette plateforme
MySQL installation failed -gpg verification failed
发现你看不到的物体!南开&武大&ETH提出用于伪装目标检测SINet,代码已开源!...
技术人创业:失败不是成功,但反思是
[staff] Sibelius 7.5.1 score software installation (software download | software installation)
D4:非成对图像去雾,基于密度与深度分解的自增强方法(CVPR 2022)
[shutter] shutter gesture interaction (small ball following the movement of fingers)
Evolution of messaging and streaming systems under the native tide of open source cloud
PIP version update timeout - download using domestic image
Oriental Aesthetics and software design
From "bronze" to "King", there are three secrets of enterprise digitalization
MySQL learning record (2)
Une semaine de vie
MySQL learning record (6)
Basic IO interface technology - microcomputer Chapter 7 Notes