Skip to content

Commit b743f21

Browse files
committed
feat: add solutions to lc problem: No.0066, 0150
- No.0066.Plus One - No.0150.Evaluate Reverse Polish Notation
1 parent a06d77d commit b743f21

File tree

8 files changed

+326
-0
lines changed

8 files changed

+326
-0
lines changed

solution/0000-0099/0066.Plus One/README.md

+34
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,40 @@ func plusOne(digits []int) []int {
143143
}
144144
```
145145

146+
### **TypeScript**
147+
148+
```ts
149+
function plusOne(digits: number[]): number[] {
150+
const n = digits.length;
151+
for (let i = n - 1; i >= 0; i--) {
152+
if (10 > ++digits[i]) {
153+
return digits;
154+
}
155+
digits[i] %= 10;
156+
}
157+
return [1, ...digits];
158+
}
159+
```
160+
161+
### **Rust**
162+
163+
```rust
164+
impl Solution {
165+
pub fn plus_one(mut digits: Vec<i32>) -> Vec<i32> {
166+
let n = digits.len();
167+
for i in (0..n).rev() {
168+
digits[i] += 1;
169+
if 10 > digits[i] {
170+
return digits;
171+
}
172+
digits[i] %= 10;
173+
}
174+
digits.insert(0, 1);
175+
digits
176+
}
177+
}
178+
```
179+
146180
### **...**
147181

148182
```

solution/0000-0099/0066.Plus One/README_EN.md

+34
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,40 @@ func plusOne(digits []int) []int {
139139
}
140140
```
141141

142+
### **TypeScript**
143+
144+
```ts
145+
function plusOne(digits: number[]): number[] {
146+
const n = digits.length;
147+
for (let i = n - 1; i >= 0; i--) {
148+
if (10 > ++digits[i]) {
149+
return digits;
150+
}
151+
digits[i] %= 10;
152+
}
153+
return [1, ...digits];
154+
}
155+
```
156+
157+
### **Rust**
158+
159+
```rust
160+
impl Solution {
161+
pub fn plus_one(mut digits: Vec<i32>) -> Vec<i32> {
162+
let n = digits.len();
163+
for i in (0..n).rev() {
164+
digits[i] += 1;
165+
if 10 > digits[i] {
166+
return digits;
167+
}
168+
digits[i] %= 10;
169+
}
170+
digits.insert(0, 1);
171+
digits
172+
}
173+
}
174+
```
175+
142176
### **...**
143177

144178
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
impl Solution {
2+
pub fn plus_one(mut digits: Vec<i32>) -> Vec<i32> {
3+
let n = digits.len();
4+
for i in (0..n).rev() {
5+
digits[i] += 1;
6+
if 10 > digits[i] {
7+
return digits;
8+
}
9+
digits[i] %= 10;
10+
}
11+
digits.insert(0, 1);
12+
digits
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
function plusOne(digits: number[]): number[] {
2+
const n = digits.length;
3+
for (let i = n - 1; i >= 0; i--) {
4+
if (10 > ++digits[i]) {
5+
return digits;
6+
}
7+
digits[i] %= 10;
8+
}
9+
return [1, ...digits];
10+
}

solution/0100-0199/0150.Evaluate Reverse Polish Notation/README.md

+93
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,99 @@ func popInt(stack *arraystack.Stack) int {
225225
}
226226
```
227227

228+
### **C#**
229+
230+
```cs
231+
using System.Collections.Generic;
232+
233+
public class Solution {
234+
public int EvalRPN(string[] tokens) {
235+
var stack = new Stack<int>();
236+
foreach (var token in tokens)
237+
{
238+
switch (token)
239+
{
240+
case "+":
241+
stack.Push(stack.Pop() + stack.Pop());
242+
break;
243+
case "-":
244+
stack.Push(-stack.Pop() + stack.Pop());
245+
break;
246+
case "*":
247+
stack.Push(stack.Pop() * stack.Pop());
248+
break;
249+
case "/":
250+
var right = stack.Pop();
251+
stack.Push(stack.Pop() / right);
252+
break;
253+
default:
254+
stack.Push(int.Parse(token));
255+
break;
256+
}
257+
}
258+
return stack.Pop();
259+
}
260+
}
261+
```
262+
263+
### **TypeScript**
264+
265+
```ts
266+
function evalRPN(tokens: string[]): number {
267+
const stack = [];
268+
for (const token of tokens) {
269+
if (/\d/.test(token)) {
270+
stack.push(Number(token));
271+
} else {
272+
const a = stack.pop();
273+
const b = stack.pop();
274+
switch (token) {
275+
case '+':
276+
stack.push(b + a);
277+
break;
278+
case '-':
279+
stack.push(b - a);
280+
break;
281+
case '*':
282+
stack.push(b * a);
283+
break;
284+
case '/':
285+
stack.push(~~(b / a));
286+
break;
287+
}
288+
}
289+
}
290+
return stack[0];
291+
}
292+
```
293+
294+
### **Rust**
295+
296+
```rust
297+
impl Solution {
298+
pub fn eval_rpn(tokens: Vec<String>) -> i32 {
299+
let mut stack = vec![];
300+
for token in tokens {
301+
match token.parse() {
302+
Ok(num) => stack.push(num),
303+
Err(_) => {
304+
let a = stack.pop().unwrap();
305+
let b = stack.pop().unwrap();
306+
stack.push(match token.as_str() {
307+
"+" => b + a,
308+
"-" => b - a,
309+
"*" => b * a,
310+
"/" => b / a,
311+
_ => 0,
312+
})
313+
}
314+
}
315+
}
316+
stack[0]
317+
}
318+
}
319+
```
320+
228321
### **...**
229322

230323
```

solution/0100-0199/0150.Evaluate Reverse Polish Notation/README_EN.md

+93
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,99 @@ func popInt(stack *arraystack.Stack) int {
193193
}
194194
```
195195

196+
### **C#**
197+
198+
```cs
199+
using System.Collections.Generic;
200+
201+
public class Solution {
202+
public int EvalRPN(string[] tokens) {
203+
var stack = new Stack<int>();
204+
foreach (var token in tokens)
205+
{
206+
switch (token)
207+
{
208+
case "+":
209+
stack.Push(stack.Pop() + stack.Pop());
210+
break;
211+
case "-":
212+
stack.Push(-stack.Pop() + stack.Pop());
213+
break;
214+
case "*":
215+
stack.Push(stack.Pop() * stack.Pop());
216+
break;
217+
case "/":
218+
var right = stack.Pop();
219+
stack.Push(stack.Pop() / right);
220+
break;
221+
default:
222+
stack.Push(int.Parse(token));
223+
break;
224+
}
225+
}
226+
return stack.Pop();
227+
}
228+
}
229+
```
230+
231+
### **TypeScript**
232+
233+
```ts
234+
function evalRPN(tokens: string[]): number {
235+
const stack = [];
236+
for (const token of tokens) {
237+
if (/\d/.test(token)) {
238+
stack.push(Number(token));
239+
} else {
240+
const a = stack.pop();
241+
const b = stack.pop();
242+
switch (token) {
243+
case '+':
244+
stack.push(b + a);
245+
break;
246+
case '-':
247+
stack.push(b - a);
248+
break;
249+
case '*':
250+
stack.push(b * a);
251+
break;
252+
case '/':
253+
stack.push(~~(b / a));
254+
break;
255+
}
256+
}
257+
}
258+
return stack[0];
259+
}
260+
```
261+
262+
### **Rust**
263+
264+
```rust
265+
impl Solution {
266+
pub fn eval_rpn(tokens: Vec<String>) -> i32 {
267+
let mut stack = vec![];
268+
for token in tokens {
269+
match token.parse() {
270+
Ok(num) => stack.push(num),
271+
Err(_) => {
272+
let a = stack.pop().unwrap();
273+
let b = stack.pop().unwrap();
274+
stack.push(match token.as_str() {
275+
"+" => b + a,
276+
"-" => b - a,
277+
"*" => b * a,
278+
"/" => b / a,
279+
_ => 0,
280+
})
281+
}
282+
}
283+
}
284+
stack[0]
285+
}
286+
}
287+
```
288+
196289
### **...**
197290

198291
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
impl Solution {
2+
pub fn eval_rpn(tokens: Vec<String>) -> i32 {
3+
let mut stack = vec![];
4+
for token in tokens {
5+
match token.parse() {
6+
Ok(num) => stack.push(num),
7+
Err(_) => {
8+
let a = stack.pop().unwrap();
9+
let b = stack.pop().unwrap();
10+
stack.push(match token.as_str() {
11+
"+" => b + a,
12+
"-" => b - a,
13+
"*" => b * a,
14+
"/" => b / a,
15+
_ => 0,
16+
})
17+
}
18+
}
19+
}
20+
stack[0]
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function evalRPN(tokens: string[]): number {
2+
const stack = [];
3+
for (const token of tokens) {
4+
if (/\d/.test(token)) {
5+
stack.push(Number(token));
6+
} else {
7+
const a = stack.pop();
8+
const b = stack.pop();
9+
switch (token) {
10+
case '+':
11+
stack.push(b + a);
12+
break;
13+
case '-':
14+
stack.push(b - a);
15+
break;
16+
case '*':
17+
stack.push(b * a);
18+
break;
19+
case '/':
20+
stack.push(~~(b / a));
21+
break;
22+
}
23+
}
24+
}
25+
return stack[0];
26+
}

0 commit comments

Comments
 (0)