72
72
``` python
73
73
class Solution :
74
74
def sortJumbled (self , mapping : List[int ], nums : List[int ]) -> List[int ]:
75
- arr = []
76
- for i, x in enumerate (nums) :
77
- y = mapping[ 0 ] if x == 0 else 0
78
- k = 1
75
+ def f ( x : int ) -> int :
76
+ if x == 0 :
77
+ return mapping[ 0 ]
78
+ y, k = 0 , 1
79
79
while x:
80
80
x, v = divmod (x, 10 )
81
- y = mapping[v] * k + y
81
+ v = mapping[v]
82
+ y = k * v + y
82
83
k *= 10
83
- arr.append((y, i))
84
- arr.sort()
84
+ return y
85
+
86
+ arr = sorted ((f(x), i) for i, x in enumerate (nums))
85
87
return [nums[i] for _, i in arr]
86
88
```
87
89
88
90
``` java
89
91
class Solution {
92
+ private int [] mapping;
93
+
90
94
public int [] sortJumbled (int [] mapping , int [] nums ) {
95
+ this . mapping = mapping;
91
96
int n = nums. length;
92
- int [][] arr = new int [n][2 ];
97
+ int [][] arr = new int [n][0 ];
93
98
for (int i = 0 ; i < n; ++ i) {
94
- int x = nums[i];
95
- int y = x == 0 ? mapping[0 ] : 0 ;
96
- int k = 1 ;
97
- for (; x > 0 ; x /= 10 ) {
98
- y += k * mapping[x % 10 ];
99
- k *= 10 ;
100
- }
101
- arr[i] = new int [] {y, i};
99
+ arr[i] = new int [] {f(nums[i]), i};
102
100
}
103
101
Arrays . sort(arr, (a, b) - > a[0 ] == b[0 ] ? a[1 ] - b[1 ] : a[0 ] - b[0 ]);
104
102
int [] ans = new int [n];
@@ -107,28 +105,46 @@ class Solution {
107
105
}
108
106
return ans;
109
107
}
108
+
109
+ private int f (int x ) {
110
+ if (x == 0 ) {
111
+ return mapping[0 ];
112
+ }
113
+ int y = 0 ;
114
+ for (int k = 1 ; x > 0 ; x /= 10 ) {
115
+ int v = mapping[x % 10 ];
116
+ y = k * v + y;
117
+ k *= 10 ;
118
+ }
119
+ return y;
120
+ }
110
121
}
111
122
```
112
123
113
124
``` cpp
114
125
class Solution {
115
126
public:
116
127
vector<int > sortJumbled(vector<int >& mapping, vector<int >& nums) {
117
- int n = nums.size();
118
- vector<pair<int, int>> arr(n);
119
- for (int i = 0; i < n; ++i) {
120
- int x = nums [ i ] ;
121
- int y = x == 0 ? mapping [ 0 ] : 0;
122
- int k = 1;
123
- for (; x; x /= 10) {
124
- y + = k * mapping [ x % 10 ] ;
128
+ auto f = [ & ] (int x) {
129
+ if (x == 0) {
130
+ return mapping [ 0 ] ;
131
+ }
132
+ int y = 0;
133
+ for ( int k = 1; x; x /= 10) {
134
+ int v = mapping [ x % 10 ] ;
135
+ y = k * v + y ;
125
136
k * = 10;
126
137
}
127
- arr[ i] = {y, i};
138
+ return y;
139
+ };
140
+ const int n = nums.size();
141
+ vector<pair<int, int>> arr;
142
+ for (int i = 0; i < n; ++i) {
143
+ arr.emplace_back(f(nums[ i] ), i);
128
144
}
129
145
sort(arr.begin(), arr.end());
130
146
vector<int > ans;
131
- for (auto& [ _ , i] : arr) {
147
+ for (const auto& [ _ , i] : arr) {
132
148
ans.push_back(nums[ i] );
133
149
}
134
150
return ans;
@@ -139,25 +155,24 @@ public:
139
155
```go
140
156
func sortJumbled(mapping []int, nums []int) (ans []int) {
141
157
n := len(nums)
142
- arr := make([][2]int, n)
143
- for i, x := range nums {
144
- y := 0
158
+ f := func(x int) (y int) {
145
159
if x == 0 {
146
- y = mapping[0]
160
+ return mapping[0]
147
161
}
148
- k := 1
149
- for ; x > 0; x /= 10 {
150
- y + = k * mapping[x%10]
162
+ for k := 1; x > 0; x /= 10 {
163
+ v := mapping[x%10]
164
+ y = k*v + y
151
165
k *= 10
152
166
}
153
- arr[i] = [2]int{y, i}
167
+ return
168
+ }
169
+ arr := make([][2]int, n)
170
+ for i, x := range nums {
171
+ arr[i] = [2]int{f(x), i}
154
172
}
155
- sort.Slice(arr, func(i, j int) bool {
156
- a, b := arr[i], arr[j]
157
- return a[0] < b[0] || a[0] == b[0] && a[1] < b[1]
158
- })
159
- for _, x := range arr {
160
- ans = append(ans, nums[x[1]])
173
+ sort.Slice(arr, func(i, j int) bool { return arr[i][0] < arr[j][0] || arr[i][0] == arr[j][0] && arr[i][1] < arr[j][1] })
174
+ for _, p := range arr {
175
+ ans = append(ans, nums[p[1]])
161
176
}
162
177
return
163
178
}
@@ -166,18 +181,91 @@ func sortJumbled(mapping []int, nums []int) (ans []int) {
166
181
``` ts
167
182
function sortJumbled(mapping : number [], nums : number []): number [] {
168
183
const n = nums .length ;
169
- const arr: number [][] = [];
170
- for (let i = 0 ; i < n ; ++ i ) {
171
- let x = nums [i ];
172
- let y = x === 0 ? mapping [0 ] : 0 ;
173
- let k = 1 ;
174
- for (; x > 0 ; x = Math .floor (x / 10 ), k *= 10 ) {
175
- y += mapping [x % 10 ] * k ;
184
+ const f = (x : number ): number => {
185
+ if (x === 0 ) {
186
+ return mapping [0 ];
176
187
}
177
- arr .push ([y , i ]);
178
- }
188
+ let y = 0 ;
189
+ for (let k = 1 ; x ; x = (x / 10 ) | 0 ) {
190
+ const v = mapping [x % 10 ];
191
+ y += v * k ;
192
+ k *= 10 ;
193
+ }
194
+ return y ;
195
+ };
196
+ const arr: number [][] = nums .map ((x , i ) => [f (x ), i ]);
179
197
arr .sort ((a , b ) => (a [0 ] === b [0 ] ? a [1 ] - b [1 ] : a [0 ] - b [0 ]));
180
- return arr .map (a => nums [a [1 ]]);
198
+ return arr .map (x => nums [x [1 ]]);
199
+ }
200
+ ```
201
+
202
+ ``` rust
203
+ impl Solution {
204
+ pub fn sort_jumbled (mapping : Vec <i32 >, nums : Vec <i32 >) -> Vec <i32 > {
205
+ let f = | x : i32 | -> i32 {
206
+ if x == 0 {
207
+ return mapping [0 ];
208
+ }
209
+ let mut y = 0 ;
210
+ let mut k = 1 ;
211
+ let mut num = x ;
212
+ while num != 0 {
213
+ let v = mapping [(num % 10 ) as usize ];
214
+ y = k * v + y ;
215
+ k *= 10 ;
216
+ num /= 10 ;
217
+ }
218
+ y
219
+ };
220
+
221
+ let n = nums . len ();
222
+ let mut arr : Vec <(i32 , usize )> = Vec :: with_capacity (n );
223
+ for i in 0 .. n {
224
+ arr . push ((f (nums [i ]), i ));
225
+ }
226
+ arr . sort ();
227
+
228
+ let mut ans : Vec <i32 > = Vec :: with_capacity (n );
229
+ for (_ , i ) in arr {
230
+ ans . push (nums [i ]);
231
+ }
232
+ ans
233
+ }
234
+ }
235
+ ```
236
+
237
+ ``` cs
238
+ public class Solution {
239
+ public int [] SortJumbled (int [] mapping , int [] nums ) {
240
+ Func < int , int > f = (int x ) => {
241
+ if (x == 0 ) {
242
+ return mapping [0 ];
243
+ }
244
+ int y = 0 ;
245
+ int k = 1 ;
246
+ int num = x ;
247
+ while (num != 0 ) {
248
+ int v = mapping [num % 10 ];
249
+ y = k * v + y ;
250
+ k *= 10 ;
251
+ num /= 10 ;
252
+ }
253
+ return y ;
254
+ };
255
+
256
+ int n = nums .Length ;
257
+ List < (int , int )> arr = new List <(int , int )>();
258
+ for (int i = 0 ; i < n ; ++ i ) {
259
+ arr .Add ((f (nums [i ]), i ));
260
+ }
261
+ arr .Sort ();
262
+
263
+ int [] ans = new int [n ];
264
+ for (int i = 0 ; i < n ; ++ i ) {
265
+ ans [i ] = nums [arr [i ].Item2 ];
266
+ }
267
+ return ans ;
268
+ }
181
269
}
182
270
```
183
271
0 commit comments