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