public string[] FindRestaurant(string[] list1, string[] list2) {
Dictionary<string, int> dic = new Dictionary<string, int>(list1.Length);
for (int i = 0; i < list1.Length; i++)
{
dic.Add(list1[i], i);
}
List<string> result = new List<string>();
int min = -1;
for (int i = 0; i < list2.Length; i++)
{
if (dic.Keys.Contains(list2[i]))
{
int t = i + dic[list2[i]];
if (min == -1 || min == t)
{
min = t;
result.Add(list2[i]);
}
else if (t < min)
{
min = t;
result.Clear();
result.Add(list2[i]);
}
}
}
return result.ToArray();
}
效果很不好:
执行用时 :504 ms, 在所有C#提交中击败了79.31%的用户
内存消耗 :39.9 MB, 在所有C#提交中击败了75.00%的用户
对你的代码修改如下,
去试一下,我觉得LeetCode的判题机,执行用时波动很大,如果你和最快的程序差距在几十ms以内,那么你就不用去优化时间效率了。