Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit49fea5c

Browse files
authored
feat: add rust solution to lc problem: No.0581 (#4414)
No.0581.Shortest Unsorted Continuous Subarray
1 parent070dbb6 commit49fea5c

File tree

4 files changed

+136
-72
lines changed

4 files changed

+136
-72
lines changed

‎solution/0500-0599/0581.Shortest Unsorted Continuous Subarray/README.md

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -173,32 +173,20 @@ function findUnsortedSubarray(nums: number[]): number {
173173
```rust
174174
implSolution {
175175
pubfnfind_unsorted_subarray(nums:Vec<i32>)->i32 {
176-
letinf=1<<30;
177-
letn=nums.len();
178-
letmutl=-1;
179-
letmutr=-1;
180-
letmutmi=inf;
181-
letmutmx=-inf;
182-
183-
foriin0..n {
184-
ifmx>nums[i] {
185-
r=iasi32;
186-
}else {
187-
mx=nums[i];
188-
}
189-
190-
ifmi<nums[n-i-1] {
191-
l= (n-i-1)asi32;
192-
}else {
193-
mi=nums[n-i-1];
194-
}
176+
letmutarr=nums.clone();
177+
arr.sort();
178+
letmutl=0usize;
179+
whilel<nums.len()&&nums[l]==arr[l] {
180+
l+=1;
195181
}
196-
197-
ifr==-1 {
198-
0
199-
}else {
200-
r-l+1
182+
ifl==nums.len() {
183+
return0;
184+
}
185+
letmutr=nums.len()-1;
186+
whiler>l&&nums[r]==arr[r] {
187+
r-=1;
201188
}
189+
(r-l+1)asi32
202190
}
203191
}
204192
```
@@ -340,6 +328,41 @@ function findUnsortedSubarray(nums: number[]): number {
340328
}
341329
```
342330

331+
####Rust
332+
333+
```rust
334+
implSolution {
335+
pubfnfind_unsorted_subarray(nums:Vec<i32>)->i32 {
336+
letinf=1<<30;
337+
letn=nums.len();
338+
letmutl=-1;
339+
letmutr=-1;
340+
letmutmi=inf;
341+
letmutmx=-inf;
342+
343+
foriin0..n {
344+
ifmx>nums[i] {
345+
r=iasi32;
346+
}else {
347+
mx=nums[i];
348+
}
349+
350+
ifmi<nums[n-i-1] {
351+
l= (n-i-1)asi32;
352+
}else {
353+
mi=nums[n-i-1];
354+
}
355+
}
356+
357+
ifr==-1 {
358+
0
359+
}else {
360+
r-l+1
361+
}
362+
}
363+
}
364+
```
365+
343366
<!-- tabs:end -->
344367

345368
<!-- solution:end -->

‎solution/0500-0599/0581.Shortest Unsorted Continuous Subarray/README_EN.md

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -166,32 +166,20 @@ function findUnsortedSubarray(nums: number[]): number {
166166
```rust
167167
implSolution {
168168
pubfnfind_unsorted_subarray(nums:Vec<i32>)->i32 {
169-
letinf=1<<30;
170-
letn=nums.len();
171-
letmutl=-1;
172-
letmutr=-1;
173-
letmutmi=inf;
174-
letmutmx=-inf;
175-
176-
foriin0..n {
177-
ifmx>nums[i] {
178-
r=iasi32;
179-
}else {
180-
mx=nums[i];
181-
}
182-
183-
ifmi<nums[n-i-1] {
184-
l= (n-i-1)asi32;
185-
}else {
186-
mi=nums[n-i-1];
187-
}
169+
letmutarr=nums.clone();
170+
arr.sort();
171+
letmutl=0usize;
172+
whilel<nums.len()&&nums[l]==arr[l] {
173+
l+=1;
188174
}
189-
190-
ifr==-1 {
191-
0
192-
}else {
193-
r-l+1
175+
ifl==nums.len() {
176+
return0;
177+
}
178+
letmutr=nums.len()-1;
179+
whiler>l&&nums[r]==arr[r] {
180+
r-=1;
194181
}
182+
(r-l+1)asi32
195183
}
196184
}
197185
```
@@ -333,6 +321,41 @@ function findUnsortedSubarray(nums: number[]): number {
333321
}
334322
```
335323

324+
####Rust
325+
326+
```rust
327+
implSolution {
328+
pubfnfind_unsorted_subarray(nums:Vec<i32>)->i32 {
329+
letinf=1<<30;
330+
letn=nums.len();
331+
letmutl=-1;
332+
letmutr=-1;
333+
letmutmi=inf;
334+
letmutmx=-inf;
335+
336+
foriin0..n {
337+
ifmx>nums[i] {
338+
r=iasi32;
339+
}else {
340+
mx=nums[i];
341+
}
342+
343+
ifmi<nums[n-i-1] {
344+
l= (n-i-1)asi32;
345+
}else {
346+
mi=nums[n-i-1];
347+
}
348+
}
349+
350+
ifr==-1 {
351+
0
352+
}else {
353+
r-l+1
354+
}
355+
}
356+
}
357+
```
358+
336359
<!-- tabs:end -->
337360

338361
<!-- solution:end -->
Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,18 @@
11
implSolution{
22
pubfnfind_unsorted_subarray(nums:Vec<i32>) ->i32{
3-
let inf =1 <<30;
4-
let n = nums.len();
5-
letmut l = -1;
6-
letmut r = -1;
7-
letmut mi = inf;
8-
letmut mx = -inf;
9-
10-
for iin0..n{
11-
if mx > nums[i]{
12-
r = iasi32;
13-
}else{
14-
mx = nums[i];
15-
}
16-
17-
if mi < nums[n - i -1]{
18-
l =(n - i -1)asi32;
19-
}else{
20-
mi = nums[n - i -1];
21-
}
3+
letmut arr = nums.clone();
4+
arr.sort();
5+
letmut l =0usize;
6+
while l < nums.len() && nums[l] == arr[l]{
7+
l +=1;
228
}
23-
24-
if r == -1{
25-
0
26-
}else{
27-
r - l +1
9+
if l == nums.len(){
10+
return0;
2811
}
12+
letmut r = nums.len() -1;
13+
while r > l && nums[r] == arr[r]{
14+
r -=1;
15+
}
16+
(r - l +1)asi32
2917
}
3018
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
implSolution{
2+
pubfnfind_unsorted_subarray(nums:Vec<i32>) ->i32{
3+
let inf =1 <<30;
4+
let n = nums.len();
5+
letmut l = -1;
6+
letmut r = -1;
7+
letmut mi = inf;
8+
letmut mx = -inf;
9+
10+
for iin0..n{
11+
if mx > nums[i]{
12+
r = iasi32;
13+
}else{
14+
mx = nums[i];
15+
}
16+
17+
if mi < nums[n - i -1]{
18+
l =(n - i -1)asi32;
19+
}else{
20+
mi = nums[n - i -1];
21+
}
22+
}
23+
24+
if r == -1{
25+
0
26+
}else{
27+
r - l +1
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp