Skip to content

Commit a471f17

Browse files
authored
feat: add typescript solution to lc problem: No.2059 (#606)
No.2059.Minimum Operations to Convert Number
1 parent c83cb6b commit a471f17

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed

solution/2000-2099/2059.Minimum Operations to Convert Number/README.md

+33
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@
8989

9090
<!-- 这里可写通用的实现逻辑 -->
9191

92+
BFS
93+
9294
<!-- tabs:start -->
9395

9496
### **Python3**
@@ -107,6 +109,37 @@
107109

108110
```
109111

112+
### **TypeScript**
113+
114+
```ts
115+
function minimumOperations(nums: number[], start: number, goal: number): number {
116+
const n = nums.length;
117+
const op1 = function (x: number, y: number): number { return x + y; };
118+
const op2 = function (x: number, y: number): number { return x - y; };
119+
const op3 = function (x: number, y: number): number { return x ^ y; };
120+
const ops = [op1, op2, op3];
121+
let vis = new Array(1001).fill(false);
122+
let quenue: Array<Array<number>> = [[start, 0]];
123+
vis[start] = true;
124+
while (quenue.length) {
125+
let [x, step] = quenue.shift();
126+
for (let i = 0; i < n; i++) {
127+
for (let j = 0; j < ops.length; j++) {
128+
const nx = ops[j](x, nums[i]);
129+
if (nx == goal) {
130+
return step + 1;
131+
}
132+
if (nx >= 0 && nx <= 1000 && !vis[nx]) {
133+
vis[nx] = true;
134+
quenue.push([nx, step + 1]);
135+
}
136+
}
137+
}
138+
}
139+
return -1;
140+
};
141+
```
142+
110143
### **...**
111144

112145
```

solution/2000-2099/2059.Minimum Operations to Convert Number/README_EN.md

+33
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ We can go from 0 &rarr; 1 &rarr; 2 &rarr; 3 with the following 3 operations.
8686

8787
## Solutions
8888

89+
BFS
90+
8991
<!-- tabs:start -->
9092

9193
### **Python3**
@@ -100,6 +102,37 @@ We can go from 0 &rarr; 1 &rarr; 2 &rarr; 3 with the following 3 operations.
100102

101103
```
102104

105+
### **TypeScript**
106+
107+
```ts
108+
function minimumOperations(nums: number[], start: number, goal: number): number {
109+
const n = nums.length;
110+
const op1 = function (x: number, y: number): number { return x + y; };
111+
const op2 = function (x: number, y: number): number { return x - y; };
112+
const op3 = function (x: number, y: number): number { return x ^ y; };
113+
const ops = [op1, op2, op3];
114+
let vis = new Array(1001).fill(false);
115+
let quenue: Array<Array<number>> = [[start, 0]];
116+
vis[start] = true;
117+
while (quenue.length) {
118+
let [x, step] = quenue.shift();
119+
for (let i = 0; i < n; i++) {
120+
for (let j = 0; j < ops.length; j++) {
121+
const nx = ops[j](x, nums[i]);
122+
if (nx == goal) {
123+
return step + 1;
124+
}
125+
if (nx >= 0 && nx <= 1000 && !vis[nx]) {
126+
vis[nx] = true;
127+
quenue.push([nx, step + 1]);
128+
}
129+
}
130+
}
131+
}
132+
return -1;
133+
};
134+
```
135+
103136
### **...**
104137

105138
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function minimumOperations(nums: number[], start: number, goal: number): number {
2+
const n = nums.length;
3+
const op1 = function (x: number, y: number): number { return x + y; };
4+
const op2 = function (x: number, y: number): number { return x - y; };
5+
const op3 = function (x: number, y: number): number { return x ^ y; };
6+
const ops = [op1, op2, op3];
7+
let vis = new Array(1001).fill(false);
8+
let quenue: Array<Array<number>> = [[start, 0]];
9+
vis[start] = true;
10+
while (quenue.length) {
11+
let [x, step] = quenue.shift();
12+
for (let i = 0; i < n; i++) {
13+
for (let j = 0; j < ops.length; j++) {
14+
const nx = ops[j](x, nums[i]);
15+
if (nx == goal) {
16+
return step + 1;
17+
}
18+
if (nx >= 0 && nx <= 1000 && !vis[nx]) {
19+
vis[nx] = true;
20+
quenue.push([nx, step + 1]);
21+
}
22+
}
23+
}
24+
}
25+
return -1;
26+
};

0 commit comments

Comments
 (0)