File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -65,4 +65,37 @@ impl Solution {
65
65
a as i32
66
66
}
67
67
}
68
+ ```
69
+
70
+ std强大的标准库 Vec上retain方法
71
+
72
+ ``` rust
73
+
74
+ impl Solution {
75
+ pub fn remove_element (nums : & mut Vec <i32 >, val : i32 ) -> i32 {
76
+ nums . retain (| & x | x != val );
77
+ nums . len () as i32
78
+ }
79
+ }
80
+
81
+ ```
82
+
83
+ slow指针用来存储需要留下元素应该存放的地址,fast指针是当前处理的元素
84
+
85
+ ``` rust
86
+ impl Solution {
87
+ pub fn remove_element (nums : & mut Vec <i32 >, val : i32 ) -> i32 {
88
+ let mut slow : usize = 0usize ; // the result elem
89
+ let mut fast : usize = 0usize ; // the processing elem
90
+ while fast < nums . len () {
91
+ if nums [fast ] == val { fast += 1usize }
92
+ else {
93
+ nums [slow ] = nums [fast ]; // move elem
94
+ slow += 1usize ;
95
+ fast += 1usize ;
96
+ }
97
+ }
98
+ slow as i32
99
+ }
100
+ }
68
101
```
You can’t perform that action at this time.
0 commit comments