From 31dfca184b56926c5c53805d28068efb0986e189 Mon Sep 17 00:00:00 2001 From: YiChih Wang Date: Thu, 26 Aug 2021 20:32:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A30027.=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=85=83=E7=B4=A0Rust=E8=AA=9E=E8=A8=80=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 根據題目須回傳i32而非&mut Vec 2. 改以Owner介紹的雙指針法解題 --- problems/0027.移除元素.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/problems/0027.移除元素.md b/problems/0027.移除元素.md index fadd4d7e..dc913494 100644 --- a/problems/0027.移除元素.md +++ b/problems/0027.移除元素.md @@ -201,19 +201,17 @@ end ``` Rust: ```rust -pub fn remove_element(nums: &mut Vec, val: i32) -> &mut Vec { - let mut start: usize = 0; - while start < nums.len() { - if nums[start] == val { - nums.remove(start); +impl Solution { + pub fn remove_element(nums: &mut Vec, val: i32) -> i32 { + let mut slowIdx = 0; + for pos in (0..nums.len()) { + if nums[pos]!=val { + nums[slowIdx] = nums[pos]; + slowIdx += 1; + } } - start += 1; + return (slowIdx) as i32; } - nums -} -fn main() { - let mut nums = vec![5,1,3,5,2,3,4,1]; - println!("{:?}",remove_element(&mut nums, 5)); } ```