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 {
6565 a as i32
6666 }
6767}
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+ }
68101```
You can’t perform that action at this time.
0 commit comments