27. 移除元素
難度: 簡單
原描述:

新描述:

func?removeElement(nums?[]int,?val?int)?int?{
?for?i?:=?0;?i?<?len(nums);?i++?{
??if?nums[i]?==?val?{
???nums?=?append(nums[:i],?nums[i+1:]...)
???i--
??}
?}
?return?len(nums)
}

Rust 版本
下面這種寫法編譯無法通過:
pub?fn?remove_element(nums:?&mut?Vec<i32>,?val:?i32)?->?i32?{
????for?i?in?0..nums.len()?{
????????if?nums[i]?==?val?{
????????????nums.remove(i);
????????????i?=?i?-?1;
????????}
????}
????return?nums.len()?as?i32;
}
error[E0384]: cannot assign twice to immutable variable i
在 Rust 中,for
循環中的循環變量是不可變的,因此不能直接修改 i
的值。如果想在循環中修改 i
的值,可以改用 while
循環,并手動更新 i
的值。以下是一個示例的實現:
fn?main()?{
????let?mut?nums?=?vec![3,?1,?4,?1,?5,?9,?2,?6,?5,?4];
????let?len?=?remove_element(&mut?nums,?4);
????println!("移除元素后vec的長度為:?{:?}",?len);?//?輸出:?8
}
pub?fn?remove_element(nums:?&mut?Vec<i32>,?val:?i32)?->?i32?{
????let?mut?i?=?0;
????while?i?<?nums.len()?{
????????if?nums[i]?==?val?{
????????????nums.remove(i);
????????}?else?{
????????????i?+=?1;
????????}
????}
????nums.len()?as?i32
}

本文由 mdnice 多平臺發布