File tree 3 files changed +104
-0
lines changed
solution/2700-2799/2717.Semi-Ordered Permutation
3 files changed +104
-0
lines changed Original file line number Diff line number Diff line change @@ -161,6 +161,51 @@ function semiOrderedPermutation(nums: number[]): number {
161
161
}
162
162
```
163
163
164
+ ### ** Rust**
165
+
166
+ ``` rust
167
+ impl Solution {
168
+ pub fn semi_ordered_permutation (nums : Vec <i32 >) -> i32 {
169
+ let mut i = 0 ;
170
+ let mut j = 0 ;
171
+ let mut n = nums . len ();
172
+
173
+ for idx in 0 .. n {
174
+ if nums [idx ] == 1 {
175
+ i = idx ;
176
+ }
177
+ if nums [idx ] == n as i32 {
178
+ j = idx ;
179
+ }
180
+ }
181
+
182
+ let mut ans = i - 1 + n - j ;
183
+ if i > j {
184
+ ans = i - 1 + n - j - 1 ;
185
+ }
186
+
187
+ ans as i32
188
+ }
189
+ }
190
+ ```
191
+
192
+ ``` rust
193
+ impl Solution {
194
+ pub fn semi_ordered_permutation (nums : Vec <i32 >) -> i32 {
195
+ let n = nums . len ();
196
+ let i = nums . iter (). enumerate (). find (| & (_ , & v )| v == 1 ). map (| (i , _ )| i ). unwrap ();
197
+ let j = nums . iter (). enumerate (). find (| & (_ , & v )| v == n as i32 ). map (| (i , _ )| i ). unwrap ();
198
+
199
+ let mut ans = i - 1 + n - j ;
200
+ if i > j {
201
+ ans = i - 1 + n - j - 1 ;
202
+ }
203
+
204
+ ans as i32
205
+ }
206
+ }
207
+ ```
208
+
164
209
### ** ...**
165
210
166
211
```
Original file line number Diff line number Diff line change @@ -143,6 +143,51 @@ function semiOrderedPermutation(nums: number[]): number {
143
143
}
144
144
```
145
145
146
+ ### ** Rust**
147
+
148
+ ``` rust
149
+ impl Solution {
150
+ pub fn semi_ordered_permutation (nums : Vec <i32 >) -> i32 {
151
+ let mut i = 0 ;
152
+ let mut j = 0 ;
153
+ let mut n = nums . len ();
154
+
155
+ for idx in 0 .. n {
156
+ if nums [idx ] == 1 {
157
+ i = idx ;
158
+ }
159
+ if nums [idx ] == n as i32 {
160
+ j = idx ;
161
+ }
162
+ }
163
+
164
+ let mut ans = i - 1 + n - j ;
165
+ if i > j {
166
+ ans = i - 1 + n - j - 1 ;
167
+ }
168
+
169
+ ans as i32
170
+ }
171
+ }
172
+ ```
173
+
174
+ ``` rust
175
+ impl Solution {
176
+ pub fn semi_ordered_permutation (nums : Vec <i32 >) -> i32 {
177
+ let n = nums . len ();
178
+ let i = nums . iter (). enumerate (). find (| & (_ , & v )| v == 1 ). map (| (i , _ )| i ). unwrap ();
179
+ let j = nums . iter (). enumerate (). find (| & (_ , & v )| v == n as i32 ). map (| (i , _ )| i ). unwrap ();
180
+
181
+ let mut ans = i - 1 + n - j ;
182
+ if i > j {
183
+ ans = i - 1 + n - j - 1 ;
184
+ }
185
+
186
+ ans as i32
187
+ }
188
+ }
189
+ ```
190
+
146
191
### ** ...**
147
192
148
193
```
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn semi_ordered_permutation ( nums : Vec < i32 > ) -> i32 {
3
+ let n = nums. len ( ) ;
4
+ let i = nums. iter ( ) . enumerate ( ) . find ( |& ( _, & v) | v == 1 ) . map ( |( i, _) | i) . unwrap ( ) ;
5
+ let j = nums. iter ( ) . enumerate ( ) . find ( |& ( _, & v) | v == n as i32 ) . map ( |( i, _) | i) . unwrap ( ) ;
6
+
7
+ let mut ans = i - 1 + n - j;
8
+ if i > j {
9
+ ans = i - 1 + n - j - 1 ;
10
+ }
11
+
12
+ ans as i32
13
+ }
14
+ }
You can’t perform that action at this time.
0 commit comments