File tree 3 files changed +92
-0
lines changed
solution/2000-2099/2059.Minimum Operations to Convert Number
3 files changed +92
-0
lines changed Original file line number Diff line number Diff line change 89
89
90
90
<!-- 这里可写通用的实现逻辑 -->
91
91
92
+ BFS
93
+
92
94
<!-- tabs:start -->
93
95
94
96
### ** Python3**
107
109
108
110
```
109
111
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
+
110
143
### ** ...**
111
144
112
145
```
Original file line number Diff line number Diff line change @@ -86,6 +86,8 @@ We can go from 0 → 1 → 2 → 3 with the following 3 operations.
86
86
87
87
## Solutions
88
88
89
+ BFS
90
+
89
91
<!-- tabs:start -->
90
92
91
93
### ** Python3**
@@ -100,6 +102,37 @@ We can go from 0 → 1 → 2 → 3 with the following 3 operations.
100
102
101
103
```
102
104
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
+
103
136
### ** ...**
104
137
105
138
```
Original file line number Diff line number Diff line change
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
+ } ;
You can’t perform that action at this time.
0 commit comments