Skip to content

Commit f4d33b0

Browse files
committed
feat: update solutions to lcof problems
1 parent 2acc23e commit f4d33b0

File tree

5 files changed

+61
-51
lines changed

5 files changed

+61
-51
lines changed

lcof/面试题09. 用两个栈实现队列/README.md

+29-24
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,23 @@
3737
class CQueue:
3838

3939
def __init__(self):
40-
self._s1 = []
41-
self._s2 = []
42-
43-
def _check(self):
44-
if not self._s2:
45-
while self._s1:
46-
self._s2.append(self._s1.pop())
40+
self.s1 = []
41+
self.s2 = []
4742

4843
def appendTail(self, value: int) -> None:
49-
self._s1.append(value)
50-
self._check()
44+
self.s1.append(value)
45+
if not self.s2:
46+
self._move()
5147

5248
def deleteHead(self) -> int:
53-
self._check()
54-
return -1 if not self._s2 else self._s2.pop()
49+
if not self.s2:
50+
self._move()
51+
return -1 if not self.s2 else self.s2.pop()
52+
53+
def _move(self):
54+
while self.s1:
55+
self.s2.append(self.s1.pop())
56+
5557

5658

5759
# Your CQueue object will be instantiated and called as such:
@@ -64,28 +66,31 @@ class CQueue:
6466

6567
```java
6668
class CQueue {
67-
private Stack<Integer> s1 = new Stack<>();
68-
private Stack<Integer> s2 = new Stack<>();
6969

70+
private Deque<Integer> s1;
71+
private Deque<Integer> s2;
7072
public CQueue() {
71-
73+
s1 = new ArrayDeque<>();
74+
s2 = new ArrayDeque<>();
7275
}
73-
76+
7477
public void appendTail(int value) {
7578
s1.push(value);
76-
check();
79+
if (s2.isEmpty()) {
80+
move();
81+
}
7782
}
78-
83+
7984
public int deleteHead() {
80-
check();
81-
return s2.empty() ? -1 : s2.pop();
85+
if (s2.isEmpty()) {
86+
move();
87+
}
88+
return s2.isEmpty() ? -1 : s2.pop();
8289
}
8390

84-
private void check() {
85-
if (s2.empty()) {
86-
while (!s1.empty()) {
87-
s2.push(s1.pop());
88-
}
91+
private void move() {
92+
while (!s1.isEmpty()) {
93+
s2.push(s1.pop());
8994
}
9095
}
9196
}

lcof/面试题09. 用两个栈实现队列/Solution.java

+14-11
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
class CQueue {
2-
private Stack<Integer> s1 = new Stack<>();
3-
private Stack<Integer> s2 = new Stack<>();
42

3+
private Deque<Integer> s1;
4+
private Deque<Integer> s2;
55
public CQueue() {
6-
6+
s1 = new ArrayDeque<>();
7+
s2 = new ArrayDeque<>();
78
}
89

910
public void appendTail(int value) {
1011
s1.push(value);
11-
check();
12+
if (s2.isEmpty()) {
13+
move();
14+
}
1215
}
1316

1417
public int deleteHead() {
15-
check();
16-
return s2.empty() ? -1 : s2.pop();
18+
if (s2.isEmpty()) {
19+
move();
20+
}
21+
return s2.isEmpty() ? -1 : s2.pop();
1722
}
1823

19-
private void check() {
20-
if (s2.empty()) {
21-
while (!s1.empty()) {
22-
s2.push(s1.pop());
23-
}
24+
private void move() {
25+
while (!s1.isEmpty()) {
26+
s2.push(s1.pop());
2427
}
2528
}
2629
}
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
class CQueue:
22

33
def __init__(self):
4-
self._s1 = []
5-
self._s2 = []
6-
7-
def _check(self):
8-
if not self._s2:
9-
while self._s1:
10-
self._s2.append(self._s1.pop())
4+
self.s1 = []
5+
self.s2 = []
116

127
def appendTail(self, value: int) -> None:
13-
self._s1.append(value)
14-
self._check()
8+
self.s1.append(value)
9+
if not self.s2:
10+
self._move()
1511

1612
def deleteHead(self) -> int:
17-
self._check()
18-
return -1 if not self._s2 else self._s2.pop()
13+
if not self.s2:
14+
self._move()
15+
return -1 if not self.s2 else self.s2.pop()
16+
17+
def _move(self):
18+
while self.s1:
19+
self.s2.append(self.s1.pop())
20+
1921

2022

2123
# Your CQueue object will be instantiated and called as such:
2224
# obj = CQueue()
2325
# obj.appendTail(value)
24-
# param_2 = obj.deleteHead()
26+
# param_2 = obj.deleteHead()

lcof/面试题10- I. 斐波那契数列/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ class Solution {
5555
public int fib(int n) {
5656
int a = 0, b = 1;
5757
for (int i = 0; i < n; ++i) {
58-
int s = (a + b) % 1000000007;
58+
int c = (a + b) % 1000000007;
5959
a = b;
60-
b = s;
60+
b = c;
6161
}
6262
return a;
6363
}

lcof/面试题10- I. 斐波那契数列/Solution.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ class Solution {
22
public int fib(int n) {
33
int a = 0, b = 1;
44
for (int i = 0; i < n; ++i) {
5-
int s = (a + b) % 1000000007;
5+
int c = (a + b) % 1000000007;
66
a = b;
7-
b = s;
7+
b = c;
88
}
99
return a;
1010
}

0 commit comments

Comments
 (0)