Leetcode 1.两数之和

起因

想起去年在Leetcode刷了几道算法题,当时只是刷了几道简单的算法,也是为了学学C++,今天便想试试C++/Rust/C#用两个之和进行一个简单对比.
C++/Rust/C# 使用Leetcode两数之和进行简单性能对比

C++代码

vector<int> twoSum(vector<int>& nums, int target) {
    assert(nums.size() > 0);
    unordered_map<int, int> unMap;
    for (int i = 0; i < nums.size(); ++i) {
        int val = target - nums[i];
        unordered_map<int, int>::iterator iter = unMap.find(val);
        if (iter != unMap.end() && i != iter->second) {
            return vector<int>{i, iter->second};
        }
        unMap[nums[i]] = i;
    }
    return vector<int>{0, 0};
}

Rust代码

vector<int> twoSum(vector<int>& nums, int target) {
    assert(nums.size() > 0);
    unordered_map<int, int> unMap;
    for (int i = 0; i < nums.size(); ++i) {
        int val = target - nums[i];
        unordered_map<int, int>::iterator iter = unMap.find(val);
        if (iter != unMap.end() && i != iter->second) {
            return vector<int>{i, iter->second};
        }
        unMap[nums[i]] = i;
    }
    return vector<int>{0, 0};
}

c#代码

public int[] TwoSum(int[] nums, int target)
{
    Dictionary<int, int> dic = new Dictionary<int, int>();
    for (int i = 0; i < nums.Length; i++)
    {
        int val = target - nums[i];
        if (dic.ContainsKey(val))
        {
            return new int[] { i, dic[val] };
        }
        dic[nums[i]] = i;
    }
    return new int[] { 0, 0 };
}

.Net性能在这里没有优势的.在LeetCode上没有看到.Net版本,不知道是使用.Net Framework还是.Net Core.

秋风 2021-05-24