Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit de625ff

Browse files
feat: add solutions to lc problem: No.2996 (doocs#2203)
1 parent 29339f4 commit de625ff

File tree

7 files changed

+63
-66
lines changed

7 files changed

+63
-66
lines changed

‎solution/2900-2999/2996.Smallest Missing Integer Greater Than Sequential Prefix Sum/README.md‎

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@
4343

4444
<!-- 这里可写通用的实现逻辑 -->
4545

46+
**方法一:模拟 + 哈希表**
47+
48+
我们先求出数组 $nums$ 的最长顺序前缀和 $s,ドル然后从 $s$ 开始枚举整数 $x,ドル如果 $x$ 不在数组 $nums$ 中,那么 $x$ 就是答案。这里我们可以用哈希表来快速判断一个整数是否在数组 $nums$ 中。
49+
50+
时间复杂度 $O(n),ドル空间复杂度 $O(n)$。其中 $n$ 是数组 $nums$ 的长度。
51+
4652
<!-- tabs:start -->
4753

4854
### **Python3**
@@ -52,8 +58,7 @@
5258
```python
5359
class Solution:
5460
def missingInteger(self, nums: List[int]) -> int:
55-
s, n = nums[0], len(nums)
56-
j = 1
61+
s, j = nums[0], 1
5762
while j < len(nums) and nums[j] == nums[j - 1] + 1:
5863
s += nums[j]
5964
j += 1
@@ -70,9 +75,9 @@ class Solution:
7075
```java
7176
class Solution {
7277
public int missingInteger(int[] nums) {
73-
int s = nums[0], j =1;
74-
while (j < nums.length && nums[j] == nums[j - 1] + 1) {
75-
s += nums[j++];
78+
int s = nums[0];
79+
for (int j =1; j < nums.length && nums[j] == nums[j - 1] + 1; ++j) {
80+
s += nums[j];
7681
}
7782
boolean[] vis = new boolean[51];
7883
for (int x : nums) {
@@ -93,13 +98,13 @@ class Solution {
9398
class Solution {
9499
public:
95100
int missingInteger(vector<int>& nums) {
96-
int s = nums[0], j = 1;
97-
while (j < nums.size() && nums[j] == nums[j - 1] + 1) {
98-
s += nums[j++];
101+
int s = nums[0];
102+
for (int j = 1; j < nums.size() && nums[j] == nums[j - 1] + 1; ++j) {
103+
s += nums[j];
99104
}
100-
bool vis[51]{};
105+
bitset<51> vis;
101106
for (int x : nums) {
102-
vis[x] = true;
107+
vis[x] = 1;
103108
}
104109
for (int x = s;; ++x) {
105110
if (x >= 51 || !vis[x]) {
@@ -114,9 +119,9 @@ public:
114119
115120
```go
116121
func missingInteger(nums []int) int {
117-
s, j := nums[0], 1
118-
for j < len(nums) && nums[j] == nums[j-1]+1 {
119-
s, j = s+nums[j], j+1
122+
s:= nums[0]
123+
for j := 1; j < len(nums) && nums[j] == nums[j-1]+1; j++ {
124+
s += nums[j]
120125
}
121126
vis := [51]bool{}
122127
for _, x := range nums {
@@ -134,17 +139,13 @@ func missingInteger(nums []int) int {
134139

135140
```ts
136141
function missingInteger(nums: number[]): number {
137-
let [s, j] = [nums[0], 1];
138-
const n = nums.length;
139-
while (j < n && nums[j] === nums[j - 1] + 1) {
140-
s += nums[j++];
141-
}
142-
const vis: boolean[] = Array(51).fill(false);
143-
for (const x of nums) {
144-
vis[x] = true;
142+
let s = nums[0];
143+
for (let j = 1; j < nums.length && nums[j] === nums[j - 1] + 1; ++j) {
144+
s += nums[j];
145145
}
146+
const vis: Set<number> = new Set(nums);
146147
for (let x = s; ; ++x) {
147-
if (x>=vis.length||!vis[x]) {
148+
if (!vis.has(x)) {
148149
return x;
149150
}
150151
}

‎solution/2900-2999/2996.Smallest Missing Integer Greater Than Sequential Prefix Sum/README_EN.md‎

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,20 @@
3737

3838
## Solutions
3939

40+
**Solution 1: Simulation + Hash Table**
41+
42+
First, we calculate the longest prefix sum $s$ of the array $nums$. Then, starting from $s,ドル we enumerate the integer $x$. If $x$ is not in the array $nums,ドル then $x$ is the answer. Here, we can use a hash table to quickly determine whether an integer is in the array $nums$.
43+
44+
The time complexity is $O(n),ドル and the space complexity is $O(n),ドル where $n$ is the length of the array $nums$.
45+
4046
<!-- tabs:start -->
4147

4248
### **Python3**
4349

4450
```python
4551
class Solution:
4652
def missingInteger(self, nums: List[int]) -> int:
47-
s, n = nums[0], len(nums)
48-
j = 1
53+
s, j = nums[0], 1
4954
while j < len(nums) and nums[j] == nums[j - 1] + 1:
5055
s += nums[j]
5156
j += 1
@@ -60,9 +65,9 @@ class Solution:
6065
```java
6166
class Solution {
6267
public int missingInteger(int[] nums) {
63-
int s = nums[0], j =1;
64-
while (j < nums.length && nums[j] == nums[j - 1] + 1) {
65-
s += nums[j++];
68+
int s = nums[0];
69+
for (int j =1; j < nums.length && nums[j] == nums[j - 1] + 1; ++j) {
70+
s += nums[j];
6671
}
6772
boolean[] vis = new boolean[51];
6873
for (int x : nums) {
@@ -83,13 +88,13 @@ class Solution {
8388
class Solution {
8489
public:
8590
int missingInteger(vector<int>& nums) {
86-
int s = nums[0], j = 1;
87-
while (j < nums.size() && nums[j] == nums[j - 1] + 1) {
88-
s += nums[j++];
91+
int s = nums[0];
92+
for (int j = 1; j < nums.size() && nums[j] == nums[j - 1] + 1; ++j) {
93+
s += nums[j];
8994
}
90-
bool vis[51]{};
95+
bitset<51> vis;
9196
for (int x : nums) {
92-
vis[x] = true;
97+
vis[x] = 1;
9398
}
9499
for (int x = s;; ++x) {
95100
if (x >= 51 || !vis[x]) {
@@ -104,9 +109,9 @@ public:
104109
105110
```go
106111
func missingInteger(nums []int) int {
107-
s, j := nums[0], 1
108-
for j < len(nums) && nums[j] == nums[j-1]+1 {
109-
s, j = s+nums[j], j+1
112+
s:= nums[0]
113+
for j := 1; j < len(nums) && nums[j] == nums[j-1]+1; j++ {
114+
s += nums[j]
110115
}
111116
vis := [51]bool{}
112117
for _, x := range nums {
@@ -124,17 +129,13 @@ func missingInteger(nums []int) int {
124129

125130
```ts
126131
function missingInteger(nums: number[]): number {
127-
let [s, j] = [nums[0], 1];
128-
const n = nums.length;
129-
while (j < n && nums[j] === nums[j - 1] + 1) {
130-
s += nums[j++];
131-
}
132-
const vis: boolean[] = Array(51).fill(false);
133-
for (const x of nums) {
134-
vis[x] = true;
132+
let s = nums[0];
133+
for (let j = 1; j < nums.length && nums[j] === nums[j - 1] + 1; ++j) {
134+
s += nums[j];
135135
}
136+
const vis: Set<number> = new Set(nums);
136137
for (let x = s; ; ++x) {
137-
if (x>=vis.length||!vis[x]) {
138+
if (!vis.has(x)) {
138139
return x;
139140
}
140141
}

‎solution/2900-2999/2996.Smallest Missing Integer Greater Than Sequential Prefix Sum/Solution.cpp‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
class Solution {
22
public:
33
int missingInteger(vector<int>& nums) {
4-
int s = nums[0], j = 1;
5-
while (j < nums.size() && nums[j] == nums[j - 1] + 1) {
6-
s += nums[j++];
4+
int s = nums[0];
5+
for (int j = 1; j < nums.size() && nums[j] == nums[j - 1] + 1; ++j) {
6+
s += nums[j];
77
}
8-
bool vis[51]{};
8+
bitset<51> vis;
99
for (int x : nums) {
10-
vis[x] = true;
10+
vis[x] = 1;
1111
}
1212
for (int x = s;; ++x) {
1313
if (x >= 51 || !vis[x]) {

‎solution/2900-2999/2996.Smallest Missing Integer Greater Than Sequential Prefix Sum/Solution.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
func missingInteger(nums []int) int {
2-
s, j:= nums[0], 1
3-
for j < len(nums) && nums[j] == nums[j-1]+1 {
4-
s, j=s+nums[j], j+1
2+
s:= nums[0]
3+
for j :=1; j< len(nums) && nums[j] == nums[j-1]+1; j++ {
4+
s+=nums[j]
55
}
66
vis := [51]bool{}
77
for _, x := range nums {

‎solution/2900-2999/2996.Smallest Missing Integer Greater Than Sequential Prefix Sum/Solution.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
class Solution {
22
public int missingInteger(int[] nums) {
3-
int s = nums[0], j = 1;
4-
while (j< nums.length && nums[j] == nums[j - 1] + 1) {
5-
s += nums[j++];
3+
int s = nums[0];
4+
for (intj = 1; j< nums.length && nums[j] == nums[j - 1] + 1; ++j) {
5+
s += nums[j];
66
}
77
boolean[] vis = new boolean[51];
88
for (int x : nums) {

‎solution/2900-2999/2996.Smallest Missing Integer Greater Than Sequential Prefix Sum/Solution.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
class Solution:
22
def missingInteger(self, nums: List[int]) -> int:
3-
s, n = nums[0], len(nums)
4-
j = 1
3+
s, j = nums[0], 1
54
while j < len(nums) and nums[j] == nums[j - 1] + 1:
65
s += nums[j]
76
j += 1

‎solution/2900-2999/2996.Smallest Missing Integer Greater Than Sequential Prefix Sum/Solution.ts‎

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
function missingInteger(nums: number[]): number {
2-
let [s, j] = [nums[0], 1];
3-
const n = nums.length;
4-
while (j < n && nums[j] === nums[j - 1] + 1) {
5-
s += nums[j++];
6-
}
7-
const vis: boolean[] = Array(51).fill(false);
8-
for (const x of nums) {
9-
vis[x] = true;
2+
let s = nums[0];
3+
for (let j = 1; j < nums.length && nums[j] === nums[j - 1] + 1; ++j) {
4+
s += nums[j];
105
}
6+
const vis: Set<number> = new Set(nums);
117
for (let x = s; ; ++x) {
12-
if (x>=vis.length||!vis[x]) {
8+
if (!vis.has(x)) {
139
return x;
1410
}
1511
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /