Leetcode 283 移动零

起因

前几天把年前刷LeetCode的题,从C++改成改成C#和Rust,今天在改一个.第一遍刷题是用简单粗暴的方式来实现的,简单直接.
Leetcode 283 移动零

C++代码

void moveZeroes(vector<int>& nums) {
	assert(nums.size() > 0);
	int newCount = 0, total = nums.size();
	vector<int> newVec;
	for (int i = 0; i < total; ++i) {
		if (nums[i] > 0) {
			newVec.push_back(nums[i]);
		}
	}
	newCount = newVec.size();
	for (int i = 0; i < newCount; ++i) {
		nums[i] = newVec[i];
	}

	for (int i = newCount; i < total; ++i) {
		nums[i] = 0;
	}
}

C#代码

public static void MoveZeroes(int[] nums)
{
	int total = nums.Length;
	List<int> list = new List<int>();
	for (int i = 0; i < total; ++i)
	{
		if (nums[i] != 0)
		{
			list.Add(nums[i]);
		}
	}
	int newCount = list.Count;
	for (int i = 0; i < newCount; ++i)
	{
		nums[i] = list[i];
	}

	for (int i = newCount; i < total; ++i)
	{
		nums[i] = 0;
	}
}

Rust代码

pub fn move_zeroes(nums: &mut Vec<i32>) {
    let total: usize = nums.len();
    let mut new_vec: Vec<i32> = Vec::new();
    for index in 0..total {
        if nums[index]!=0 {
            new_vec.push(nums[index]);
        }
    }

    for (i, item) in new_vec.iter().enumerate() {
        nums[i] = *item;
    }

    for index in new_vec.len()..total {
        nums[index] = 0;
    }
}


秋风 2021-06-01