当前位置:网站首页>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 :
边栏推荐
- Pip install whl file Error: Error: … Ce n'est pas une roue supportée sur cette plateforme
- Blue Bridge Cup Winter vacation homework (DFS backtracking + pruning)
- Off chip ADC commissioning record
- Browser - clean up the cache of JS in the page
- Chargement de l'image pyqt après décodage et codage de l'image
- 记录一下微信、QQ、微博分享web网页功能
- 一周生活
- 100 important knowledge points that SQL must master: using cursors
- System (hierarchical) clustering method and SPSS implementation
- #include<>和#include“”的区别
猜你喜欢

*C language final course design * -- address book management system (complete project + source code + detailed notes)

Sql service intercepts string

Riding the wind of "cloud native" and stepping on the wave of "digitalization", new programmer 003 starts pre-sale

The book "new programmer 002" is officially on the market! From "new database era" to "software defined car"

Read a doctor, the kind that studies cows! Dr. enrollment of livestock technology group of Leuven University, milk quality monitoring

Analysis of neural network
![[shutter] shutter layout component (fractionallysizedbox component | stack layout component | positioned component)](/img/5f/e96baefd9481c496024fed345e31fe.jpg)
[shutter] shutter layout component (fractionallysizedbox component | stack layout component | positioned component)

GEE:(二)对影像进行重采样

Browser - clean up the cache of JS in the page

Landingsite eband B1 smoke test case
随机推荐
Unity3D学习笔记4——创建Mesh高级接口
[Jianzhi offer] 56 - ii Number of occurrences of numbers in the array II
[leetcode] sword finger offer 11 Rotate the minimum number of the array
"New programmer 003" was officially launched, and the cloud native and digital practical experience of 30+ companies such as Huawei and Alibaba
Image segmentation using pixellib
Try to get property'num for PHP database data reading_ rows' of non-object?
地理探测器原理介绍
[shutter] shutter gesture interaction (small ball following the movement of fingers)
图像基础概念与YUV/RGB深入理解
D4:非成对图像去雾,基于密度与深度分解的自增强方法(CVPR 2022)
D4: unpaired image defogging, self enhancement method based on density and depth decomposition (CVPR 2022)
Introduction to the principle of geographical detector
记录一下微信、QQ、微博分享web网页功能
Lightgbm principle and its application in astronomical data
MySQL inserts Chinese data and reports an error. Set the default collation
The difference between include < > and include ""
Five message formats of OSPF
#include<>和#include“”的区别
Learn computer knowledge from scratch
"Actbert" Baidu & Sydney University of technology proposed actbert to learn the global and local video text representation, which is effective in five video text tasks!