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 a471f17

Browse files
feat: add typescript solution to lc problem: No.2059 (doocs#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‎

Lines changed: 33 additions & 0 deletions
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‎

Lines changed: 33 additions & 0 deletions
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
```
Lines changed: 26 additions & 0 deletions
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)

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