Skip to content

Commit 4f3fc56

Browse files
authored
feat: add rust solution to lc problem: No.2717 (#1049)
1 parent 7823f60 commit 4f3fc56

File tree

3 files changed

+104
-0
lines changed

3 files changed

+104
-0
lines changed

Diff for: solution/2700-2799/2717.Semi-Ordered Permutation/README.md

+45
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,51 @@ function semiOrderedPermutation(nums: number[]): number {
161161
}
162162
```
163163

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+
164209
### **...**
165210

166211
```

Diff for: solution/2700-2799/2717.Semi-Ordered Permutation/README_EN.md

+45
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,51 @@ function semiOrderedPermutation(nums: number[]): number {
143143
}
144144
```
145145

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+
146191
### **...**
147192

148193
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
}

0 commit comments

Comments
 (0)