Skip to content

Commit b211c3a

Browse files
committed
1
1 parent f956f86 commit b211c3a

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

notes/src/day1/lc27.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff 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
```

0 commit comments

Comments
 (0)