rust 算法题求优化之 列表的减法
编写一个 array_diff 函数,以两个列表为参数,从一个列表中减去另一个,即如下:
array_diff(vec![1,2], vec![1]) == vec![2]
// 如果被减的列表中要删除的数有重复,则会一齐删除重复的
array_diff(vec![1,2,2,2,3], vec![2]) == vec![1,3]
我的代码是:
fn array_diff<T: PartialEq>(a: Vec<T>, b: Vec<T>) -> Vec<T> {
let mut lb = b.iter();
let mut a = a;
loop {
match lb.next() {
Some(b_item) => {
let len_a = a.len();
for i in (0..=len_a).rev() {
if Some(b_item) == a.get(i) {
a.remove(i as usize);
}
}
}
None => break,
}
}
a
}
代码不尽人意,还请指正改进。
推荐文章: