当前位置:网站首页>2022.02.14_ Daily question leetcode five hundred and forty
2022.02.14_ Daily question leetcode five hundred and forty
2022-07-03 16:36:00 【Promise い】
Title Description
- A single element in an ordered array
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 O(log n) Time complexity and O(1) Spatial complexity .
Example 1:
Input : nums = [1,1,2,3,3,4,4,8,8]
Output : 2
Example 2:
Input : nums = [3,3,7,7,10,11,11]
Output : 10
Tips :
1 <= nums.length <= 10^5
0 <= nums[i] <= 10^5
Answer key 1
Ideas
Use dichotomy , Ensure that the array is in left To right The length of is odd , Through the middle mid Divide the boundary , Judge the length of the left and right sub arrays respectively , Judge the corresponding according to the length mid Nearby values , Find out the result should be in mid Left or right .
Code
class Solution {
public int singleNonDuplicate(int[] nums) {
if (nums.length == 1){
return nums[0];
}
int left = 0;
int right = nums.length - 1;
while (left < right){
int mid = left + ((right - left) >> 1);
if ((mid - left + 1) % 2 == 0){
if (nums[mid] != nums[mid - 1]){
right = mid - 1;
}else {
left = mid + 1;
}
}else {
if (nums[mid] != nums[mid - 1]){
left = mid;
}else {
right = mid;
}
}
}
return nums[left];
}
}
Running results

Answer key 2
Ideas
Because the array is ordered , Therefore, it can be judged by every two numbers , According to whether the XOR result is 0 To determine the result
principle :
N ^ N == 0
N ^ 0 == N
(A ^ B) ^ C == A ^ (B ^ C)
A ^ B == B ^ A
Code
class Solution {
public int singleNonDuplicate(int[] nums) {
int res = 0;
for (int i : nums) {
res = i ^ res;
}
return res;
}
}
Running results

expand
package com.nuo.Demo;
import java.util.Arrays;
import java.util.Stack;
/** * @author nuo * @version 1.0 * @description: TODO XOR search * @date 2022/1/5 16:49 */
public class s_02{
// An array of integers , Only one number appears an odd number of times , Other numbers appear an even number of times , Find this number
public static int select_1(int[] arr) {
int eor = 0;
for (int i : arr) {
eor = eor ^ i;
}
return eor;
}
// An array of integers , There are only two numbers (a , b) An odd number of times , Other numbers appear an even number of times , Find this number
public static int[] select_2(int[] arr) {
int eor = 0;
for (int i : arr) {
eor = eor ^ i;
} // => eor = a ^ b != 0 => eor One must be '1'
// Original code & Complement code
int rightOne = eor & (~eor + 1); // => Extract the rightmost 1 , The number of these two is different
// eg. eor = 1001 => ~eor = 0110 => ~eor + 1 = 0111 => eor & (~eor + 1) = 0001
int eor_ = 0;
for (int j : arr) {
if ((rightOne & j) == 0) {
eor_ = eor_ ^ j;
}
}
return new int[]{
eor_ , eor_ ^ eor};
}
}
边栏推荐
- Golang 匿名函数使用
- TCP congestion control details | 3 design space
- How to set up SVN server on this machine
- EditText request focus - EditText request focus
- 8 tips for effective performance evaluation
- 面试官:JVM如何分配和回收堆外内存
- Construction practice camp - graduation summary of phase 6
- NSQ源码安装运行过程
- QT串口ui设计和解决显示中文乱码
- 【剑指 Offer】58 - I. 翻转单词顺序
猜你喜欢

A survey of state of the art on visual slam

Arduino esp32: overall framework of lvgl project (I)

斑馬識別成狗,AI犯錯的原因被斯坦福找到了
![[solved] access denied for user 'root' @ 'localhost' (using password: yes)](/img/71/1ff8ed1d773da99054310f96dca3f8.jpg)
[solved] access denied for user 'root' @ 'localhost' (using password: yes)

Détails du contrôle de la congestion TCP | 3. Espace de conception

Add color to the interface automation test framework and realize the enterprise wechat test report

Record windows10 installation tensorflow-gpu2.4.0

Explore Netease's large-scale automated testing solutions see here see here

Data driving of appium framework for mobile terminal automated testing

QT serial port UI design and solution to display Chinese garbled code
随机推荐
Chinese translation of Tagore's floating birds (1~10)
How programming apes grow rapidly
在ntpdate同步时间的时候出现“the NTP socket is in use, exiting”
NSQ source code installation and operation process
Unity project optimization case 1
PHP CI (CodeIgniter) log level setting
Le zèbre a été identifié comme un chien, et la cause de l'erreur d'AI a été trouvée par Stanford
PHP CI(CodeIgniter)log级别设置
TCP congestion control details | 3 design space
8 tips for effective performance evaluation
"Everyday Mathematics" serial 56: February 25
Is it safe to open an account with flush?
TCP拥塞控制详解 | 3. 设计空间
爱可可AI前沿推介(7.3)
Preventing/catching “IllegalArgumentException: parameter must be a descendant of this view” error
There are several APIs of airtest and poco that are easy to use wrong in "super". See if you have encountered them
Zebras are recognized as dogs, and Stanford found the reason why AI made mistakes
ThreeJS 第二篇:顶点概念、几何体结构
[Jianzhi offer] 64 Find 1+2+... +n
Using optimistic lock and pessimistic lock in MySQL to realize distributed lock