Skip to content

Commit 81bb83f

Browse files
authored
Create 2059-minimum-operations-to-convert-number.js
1 parent 5b62f50 commit 81bb83f

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} start
4+
* @param {number} goal
5+
* @return {number}
6+
*/
7+
var minimumOperations = function (nums, start, goal) {
8+
const visited = Array(1001).fill(0)
9+
const q = []
10+
q.push([start, 0])
11+
visited[start] = 1
12+
while (q.length) {
13+
const [val, idx] = q.shift()
14+
if (val === goal) return idx
15+
for (let e of nums) {
16+
if (val + e === goal) return idx + 1
17+
if (val + e <= 1000 && val + e >= 0 && !visited[val + e]) {
18+
visited[val + e] = 1
19+
q.push([val + e, idx + 1])
20+
}
21+
if (val - e === goal) return idx + 1
22+
if (val - e <= 1000 && val - e >= 0 && !visited[val - e]) {
23+
visited[val - e] = 1
24+
q.push([val - e, idx + 1])
25+
}
26+
27+
if ((val ^ e) === goal) return idx + 1
28+
if ((val ^ e) <= 1000 && (val ^ e) >= 0 && !visited[val ^ e]) {
29+
visited[val ^ e] = 1
30+
q.push([val ^ e, idx + 1])
31+
}
32+
}
33+
}
34+
35+
return -1
36+
}

0 commit comments

Comments
 (0)