Leetcode 27.移除元素
起因
昨天把年前学C++在LeetCode刷算法的一题,改为C#和Rust,并进行了简单对比,今天午饭后,便把另外一题改为C#和Rust.C++代码
int removeElement(vector<int>& nums, int val) {
//assert(nums.size() > 0);
int k = 0, size = nums.size();
for (int i = 0; i < size; ++i) {
if (nums[i] != val) {
nums[k++] = nums[i];
}
}
return k;
}
C#代码
public int RemoveElement(int[] nums, int val)
{
int k = 0, size = nums.Length;
for (int i = 0; i < size; ++i)
{
if (nums[i] != val)
{
nums[k++] = nums[i];
}
}
return k;
}
Rust代码
pub fn remove_element(nums: &mut Vec<i32>, val: i32) -> i32 {
let mut k: usize = 0;
let size = nums.len();
let mut i: usize = 0;
while i < size {
if nums[i] != val {
nums[k] = nums[i];
k += 1;
}
i += 1;
}
return k as i32;
}
C#(.Net)在对比中,依然还是垫底的,是因为C#有JIT(没有预热).看看结果就行了.
秋风
2021-05-25