给出了一个具有元素名称及其各自的pH值的数组。打印两种元素组成中性化合物的组合。
这里是我想出的解决方案,但是使用了Hashmap,因此O(N)空间复杂性。任何想法我都可以降低空间复杂度但保持O(N)时间复杂度
public static void FindCombinationSuchThatPHValueIsNeutralized(PhValue[] input)
{
var map = new Dictionary<int, string>();
foreach (var phValue in input)
{
if (!map.ContainsKey(-phValue.Value))
{
map.Add(phValue.Value, phValue.Element);
}
else
{
Console.WriteLine(phValue.Element + "," + map[-phValue.Value]);
break;
}
}
}
发布于 2014-09-29 13:39:41
有几件事非常挑剔,但对未来的编码会有帮助.
phValues
的名称,这样在调用foreach语句foreach (phValue in phValues)
时就更有意义了。所有这些代码如下所示
public static void FindCombinationSuchThatPHValueIsNeutralized(PhValue[] phValues)
{
var map = new Dictionary<int, string>();
foreach (var phValue in phValues)
{
if (!map.ContainsKey(-phValue.Value))
{
map.Add(phValue.Value, phValue.Element);
}
else
{
Console.WriteLine(phValue.Element + "," + map[-phValue.Value]);
break;
}
}
}
我可能也会把字典变量的名字改成更有意义的东西,比如phValueMap
或者类似的东西。
我没有实现Rolfl对此代码的任何修复,请记住这一点。
https://codereview.stackexchange.com/questions/64137
复制相似问题