Leetcode 1.两数之和
起因
想起去年在Leetcode刷了几道算法题,当时只是刷了几道简单的算法,也是为了学学C++,今天便想试试C++/Rust/C#用两个之和进行一个简单对比.
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