当前位置:网站首页>LeetCode之268.Missing number
LeetCode之268.Missing number
2022-07-27 05:01:00 【圆师傅】
1. Description
Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array.
2. Follow Up
Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity?
3. Test Cases
Example 1:
Input: nums = [3,0,1]
Output: 2
Explanation: n = 3 since there are 3 numbers, so all numbers are in the range [0,3]. 2 is the missing number in the range since it does not appear in nums.
Example 2:
Input: nums = [0,1]
Output: 2
Explanation: n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums.
Example 3:
Input: nums = [9,6,4,2,3,5,7,0,1]
Output: 8
Explanation: n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums.
Example 4:
Input: nums = [0]
Output: 1
Explanation: n = 1 since there is 1 number, so all numbers are in the range [0,1]. 1 is the missing number in the range since it does not appear in nums.
4. Solution
4.1
如果没有想到什么奇淫巧计,那就老老实实写个答案先。
class Solution {
public int missingNumber(int[] nums) {
Set<Integer> numSet = new HashSet<Integer>();
for(int num : nums) {
numSet.add(num);
}
int expectedNumCount = nums.length + 1;
for (int number=0; number<expectedNumCount; number++) {
if (!numSet.contains(number)) {
return number;
}
}
return -1;
}
}
这样做的效率显然不高。
4.3
这里就可以使用特殊的技能了。
异或操作是计算机中一个神奇的操作,可以简单的理解为相同为0,不同为1.如果使用0和任何数异或,那么结果都是任何数。
这里,由于我们知道数组中只缺少了一个数字,而且数字值的大小是数组长达+1的大小为最大值。那么我们可以看到数组[3,0,1],数组长度为3,对应的数字为0,1,2,3四个数字,但是少了一个。考虑到对应的下标,分别为0,1,2,这样我们可以使用数组的下标与数组字异或,再多比上数组长度+1,即
3 ^ 0 ^ 3 ^ 1 ^ 0 ^ 2 ^ 1 = 2,即缺失的就是2。
class Solution {
public int missingNumber(int[] nums) {
int missing = nums.length;
for (int i = 0; i < nums.length; i++) {
missing ^= i ^nums[i];
}
return missing;
}
}
边栏推荐
- 2022年郑州轻工业新生赛题目-打死我也不说
- Introduction to Kali system ARP (network disconnection sniffing password packet capturing)
- 探寻通用奥特能平台安全、智能、性能的奥秘!
- Use of collection framework
- Scientific Computing Library - numpy
- JVM上篇:内存与垃圾回收篇十一--执行引擎
- [optical flow] - data format analysis, flowwarp visualization
- 弹球小游戏
- Counting Nodes in a Binary Search Tree
- LeetCode之6 ZigZag Conversion
猜你喜欢

Alphabetic order problem

Sunyanfang, co-founder of WeiMiao: take compliance as the first essence and become the "regular army" of financial and business education

How does the TCP server handle multiple client connections on one port (one-to-one or one to many)

文件处理(IO)

Standard dialog qmessagebox

Detailed description of polymorphism

OFDM 16 lecture 2-ofdm and the DFT

Typescript details

数据库设计——关系数据理论(超详细)

Database connection pool & Druid usage
随机推荐
Domestic mainstream ERP software market
一、MySQL基础
Demo of throttling function -- regular expression matching
Svn usage details
Event
Interface and abstract class / method learning demo
LocalDateTime和ZonedDateTime
2022年郑州轻工业新生赛题目-打死我也不说
Raspberry pie RTMP streaming local camera image
JVM Part 1: memory and garbage collection part 6 -- runtime data area local method & local method stack
B1022 D进制的A+B
文件处理(IO)
SSM framework integration
How to test the payment process?
支付流程如何测试?
How to sinicize the JMeter interface?
The project connects with Alipay payment, and the intranet penetration realizes the monitoring of asynchronous callback notification of successful payment of Alipay
Database design - relational data theory (ultra detailed)
OFDM 16 lecture 2-ofdm and the DFT
Install pyGame