Skip to content

Commit b0f0dd7

Browse files
authored
Merge branch 'youngyangyang04:master' into master
2 parents f1a3fbc + f222a40 commit b0f0dd7

File tree

4 files changed

+127
-1
lines changed

4 files changed

+127
-1
lines changed

problems/0031.下一个排列.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public:
8181
for (int j = nums.size() - 1; j > i; j--) {
8282
if (nums[j] > nums[i]) {
8383
swap(nums[j], nums[i]);
84-
sort(nums.begin() + i + 1, nums.end());
84+
reverse(nums.begin() + i + 1, nums.end());
8585
return;
8686
}
8787
}

problems/0150.逆波兰表达式求值.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,71 @@ var evalRPN = function(tokens) {
210210
};
211211
```
212212

213+
TypeScript:
214+
215+
普通版:
216+
217+
```typescript
218+
function evalRPN(tokens: string[]): number {
219+
let helperStack: number[] = [];
220+
let temp: number;
221+
let i: number = 0;
222+
while (i < tokens.length) {
223+
let t: string = tokens[i];
224+
switch (t) {
225+
case '+':
226+
temp = helperStack.pop()! + helperStack.pop()!;
227+
helperStack.push(temp);
228+
break;
229+
case '-':
230+
temp = helperStack.pop()!;
231+
temp = helperStack.pop()! - temp;
232+
helperStack.push(temp);
233+
break;
234+
case '*':
235+
temp = helperStack.pop()! * helperStack.pop()!;
236+
helperStack.push(temp);
237+
break;
238+
case '/':
239+
temp = helperStack.pop()!;
240+
temp = Math.trunc(helperStack.pop()! / temp);
241+
helperStack.push(temp);
242+
break;
243+
default:
244+
helperStack.push(Number(t));
245+
break;
246+
}
247+
i++;
248+
}
249+
return helperStack.pop()!;
250+
};
251+
```
252+
253+
优化版:
254+
255+
```typescript
256+
function evalRPN(tokens: string[]): number {
257+
const helperStack: number[] = [];
258+
const operatorMap: Map<string, (a: number, b: number) => number> = new Map([
259+
['+', (a, b) => a + b],
260+
['-', (a, b) => a - b],
261+
['/', (a, b) => Math.trunc(a / b)],
262+
['*', (a, b) => a * b],
263+
]);
264+
let a: number, b: number;
265+
for (let t of tokens) {
266+
if (operatorMap.has(t)) {
267+
b = helperStack.pop()!;
268+
a = helperStack.pop()!;
269+
helperStack.push(operatorMap.get(t)!(a, b));
270+
} else {
271+
helperStack.push(Number(t));
272+
}
273+
}
274+
return helperStack.pop()!;
275+
};
276+
```
277+
213278
python3
214279

215280
```python

problems/0232.用栈实现队列.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,44 @@ MyQueue.prototype.empty = function() {
348348
};
349349
```
350350

351+
TypeScript:
352+
353+
```typescript
354+
class MyQueue {
355+
private stackIn: number[]
356+
private stackOut: number[]
357+
constructor() {
358+
this.stackIn = [];
359+
this.stackOut = [];
360+
}
361+
362+
push(x: number): void {
363+
this.stackIn.push(x);
364+
}
365+
366+
pop(): number {
367+
if (this.stackOut.length === 0) {
368+
while (this.stackIn.length > 0) {
369+
this.stackOut.push(this.stackIn.pop()!);
370+
}
371+
}
372+
return this.stackOut.pop()!;
373+
}
374+
375+
peek(): number {
376+
let temp: number = this.pop();
377+
this.stackOut.push(temp);
378+
return temp;
379+
}
380+
381+
empty(): boolean {
382+
return this.stackIn.length === 0 && this.stackOut.length === 0;
383+
}
384+
}
385+
```
386+
351387
Swift:
388+
352389
```swift
353390
class MyQueue {
354391

problems/1047.删除字符串中的所有相邻重复项.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,32 @@ var removeDuplicates = function(s) {
267267
};
268268
```
269269

270+
TypeScript:
271+
272+
```typescript
273+
function removeDuplicates(s: string): string {
274+
const helperStack: string[] = [];
275+
let i: number = 0;
276+
while (i < s.length) {
277+
let top: string = helperStack[helperStack.length - 1];
278+
if (top === s[i]) {
279+
helperStack.pop();
280+
} else {
281+
helperStack.push(s[i]);
282+
}
283+
i++;
284+
}
285+
let res: string = '';
286+
while (helperStack.length > 0) {
287+
res = helperStack.pop() + res;
288+
}
289+
return res;
290+
};
291+
```
292+
270293
C:
271294
方法一:使用栈
295+
272296
```c
273297
char * removeDuplicates(char * s){
274298
//求出字符串长度

0 commit comments

Comments
 (0)