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 b0e52a6

Browse files
committed
feat: update solutions to lc problem: No.1441
No.1441.Build an Array With Stack Operations
1 parent d64815c commit b0e52a6

File tree

6 files changed

+79
-102
lines changed

6 files changed

+79
-102
lines changed

‎solution/1400-1499/1441.Build an Array With Stack Operations/README.md‎

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@
6363

6464
<!-- 这里可写通用的实现逻辑 -->
6565

66+
**方法一:模拟**
67+
68+
我们定义 $cur$ 表示当前已经从 `list` 中读取到的数字,初始时 $cur = 0,ドル用一个数组 $ans$ 存储答案。
69+
70+
遍历数组 `target`,对于每个数字 $v,ドル如果当前要从 `list` 读取的数字小于 $v,ドル那么我们应该执行 `Push``Pop` 操作,直到读取的数字等于 $v,ドル然后执行 `Push` 操作,这样就可以得到数字 $v$。
71+
72+
遍历结束后,也就构建出了数组 `target`,返回 `ans` 即可。
73+
74+
时间复杂度 $O(n),ドル其中 $n$ 为数组 `target` 的长度。忽略答案的空间消耗,空间复杂度 $O(1)$。
75+
6676
<!-- tabs:start -->
6777

6878
### **Python3**
@@ -72,14 +82,13 @@
7282
```python
7383
class Solution:
7484
def buildArray(self, target: List[int], n: int) -> List[str]:
75-
cur, ans = 1, []
76-
for t in target:
77-
for i in range(cur, n + 1):
78-
ans.append('Push')
79-
if t == i:
80-
cur = i + 1
81-
break
82-
ans.append('Pop')
85+
cur, ans = 0, []
86+
for v in target:
87+
cur += 1
88+
while cur < v:
89+
ans.extend(['Push', 'Pop'])
90+
cur += 1
91+
ans.append('Push')
8392
return ans
8493
```
8594

@@ -90,17 +99,14 @@ class Solution:
9099
```java
91100
class Solution {
92101
public List<String> buildArray(int[] target, int n) {
102+
int cur = 0;
93103
List<String> ans = new ArrayList<>();
94-
int cur = 1;
95-
for (int t : target) {
96-
for (int i = cur; i <= n; ++i) {
104+
for (int v : target) {
105+
while (++cur < v) {
97106
ans.add("Push");
98-
if (t == i) {
99-
cur = i + 1;
100-
break;
101-
}
102107
ans.add("Pop");
103108
}
109+
ans.add("Push");
104110
}
105111
return ans;
106112
}
@@ -113,17 +119,14 @@ class Solution {
113119
class Solution {
114120
public:
115121
vector<string> buildArray(vector<int>& target, int n) {
122+
int cur = 0;
116123
vector<string> ans;
117-
int cur = 1;
118-
for (int t : target) {
119-
for (int i = cur; i <= n; ++i) {
120-
ans.push_back("Push");
121-
if (t == i) {
122-
cur = i + 1;
123-
break;
124-
}
125-
ans.push_back("Pop");
124+
for (int& v : target) {
125+
while (++cur < v) {
126+
ans.emplace_back("Push");
127+
ans.emplace_back("Pop");
126128
}
129+
ans.emplace_back("Push");
127130
}
128131
return ans;
129132
}
@@ -134,17 +137,13 @@ public:
134137
135138
```go
136139
func buildArray(target []int, n int) []string {
137-
var ans []string
138-
cur := 1
139-
for _, t := range target {
140-
for i := cur; i <= n; i++ {
141-
ans = append(ans, "Push")
142-
if t == i {
143-
cur = i + 1
144-
break
145-
}
146-
ans = append(ans, "Pop")
140+
cur := 0
141+
ans := []string{}
142+
for _, v := range target {
143+
for cur = cur + 1; cur < v; cur++ {
144+
ans = append(ans, "Push", "Pop")
147145
}
146+
ans = append(ans, "Push")
148147
}
149148
return ans
150149
}

‎solution/1400-1499/1441.Build an Array With Stack Operations/README_EN.md‎

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,13 @@ The answers that read integer 3 from the stream are not accepted.
8080
```python
8181
class Solution:
8282
def buildArray(self, target: List[int], n: int) -> List[str]:
83-
cur, ans = 1, []
84-
for t in target:
85-
for i in range(cur, n + 1):
86-
ans.append('Push')
87-
if t == i:
88-
cur = i + 1
89-
break
90-
ans.append('Pop')
83+
cur, ans = 0, []
84+
for v in target:
85+
cur += 1
86+
while cur < v:
87+
ans.extend(['Push', 'Pop'])
88+
cur += 1
89+
ans.append('Push')
9190
return ans
9291
```
9392

@@ -96,17 +95,14 @@ class Solution:
9695
```java
9796
class Solution {
9897
public List<String> buildArray(int[] target, int n) {
98+
int cur = 0;
9999
List<String> ans = new ArrayList<>();
100-
int cur = 1;
101-
for (int t : target) {
102-
for (int i = cur; i <= n; ++i) {
100+
for (int v : target) {
101+
while (++cur < v) {
103102
ans.add("Push");
104-
if (t == i) {
105-
cur = i + 1;
106-
break;
107-
}
108103
ans.add("Pop");
109104
}
105+
ans.add("Push");
110106
}
111107
return ans;
112108
}
@@ -119,17 +115,14 @@ class Solution {
119115
class Solution {
120116
public:
121117
vector<string> buildArray(vector<int>& target, int n) {
118+
int cur = 0;
122119
vector<string> ans;
123-
int cur = 1;
124-
for (int t : target) {
125-
for (int i = cur; i <= n; ++i) {
126-
ans.push_back("Push");
127-
if (t == i) {
128-
cur = i + 1;
129-
break;
130-
}
131-
ans.push_back("Pop");
120+
for (int& v : target) {
121+
while (++cur < v) {
122+
ans.emplace_back("Push");
123+
ans.emplace_back("Pop");
132124
}
125+
ans.emplace_back("Push");
133126
}
134127
return ans;
135128
}
@@ -140,17 +133,13 @@ public:
140133
141134
```go
142135
func buildArray(target []int, n int) []string {
143-
var ans []string
144-
cur := 1
145-
for _, t := range target {
146-
for i := cur; i <= n; i++ {
147-
ans = append(ans, "Push")
148-
if t == i {
149-
cur = i + 1
150-
break
151-
}
152-
ans = append(ans, "Pop")
136+
cur := 0
137+
ans := []string{}
138+
for _, v := range target {
139+
for cur = cur + 1; cur < v; cur++ {
140+
ans = append(ans, "Push", "Pop")
153141
}
142+
ans = append(ans, "Push")
154143
}
155144
return ans
156145
}

‎solution/1400-1499/1441.Build an Array With Stack Operations/Solution.cpp‎

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
class Solution {
22
public:
33
vector<string> buildArray(vector<int>& target, int n) {
4+
int cur = 0;
45
vector<string> ans;
5-
int cur = 1;
6-
for (int t : target) {
7-
for (int i = cur; i <= n; ++i) {
8-
ans.push_back("Push");
9-
if (t == i) {
10-
cur = i + 1;
11-
break;
12-
}
13-
ans.push_back("Pop");
6+
for (int& v : target) {
7+
while (++cur < v) {
8+
ans.emplace_back("Push");
9+
ans.emplace_back("Pop");
1410
}
11+
ans.emplace_back("Push");
1512
}
1613
return ans;
1714
}
Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
func buildArray(target []int, n int) []string {
2-
var ans []string
3-
cur := 1
4-
for _, t := range target {
5-
for i := cur; i <= n; i++ {
6-
ans = append(ans, "Push")
7-
if t == i {
8-
cur = i + 1
9-
break
10-
}
11-
ans = append(ans, "Pop")
2+
cur := 0
3+
ans := []string{}
4+
for _, v := range target {
5+
for cur = cur + 1; cur < v; cur++ {
6+
ans = append(ans, "Push", "Pop")
127
}
8+
ans = append(ans, "Push")
139
}
1410
return ans
1511
}

‎solution/1400-1499/1441.Build an Array With Stack Operations/Solution.java‎

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
class Solution {
22
public List<String> buildArray(int[] target, int n) {
3+
int cur = 0;
34
List<String> ans = new ArrayList<>();
4-
int cur = 1;
5-
for (int t : target) {
6-
for (int i = cur; i <= n; ++i) {
5+
for (int v : target) {
6+
while (++cur < v) {
77
ans.add("Push");
8-
if (t == i) {
9-
cur = i + 1;
10-
break;
11-
}
128
ans.add("Pop");
139
}
10+
ans.add("Push");
1411
}
1512
return ans;
1613
}
Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
class Solution:
22
def buildArray(self, target: List[int], n: int) -> List[str]:
3-
cur, ans = 1, []
4-
for t in target:
5-
for i in range(cur, n + 1):
6-
ans.append('Push')
7-
if t == i:
8-
cur = i + 1
9-
break
10-
ans.append('Pop')
3+
cur, ans = 0, []
4+
for v in target:
5+
cur += 1
6+
while cur < v:
7+
ans.extend(['Push', 'Pop'])
8+
cur += 1
9+
ans.append('Push')
1110
return ans

0 commit comments

Comments
(0)

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