为了对运行时间复杂度进行优化,我们需要一种更有效的方法来检查数组中是否存在目标元素。如果存在,我们需要找出它的索引。保持数组中的每个元素与其索引相互对应的最好方法是什么?哈希表。通过以空间换取速度的方式,我们可以将查找时间从 O(n)降低到 O(1)。哈希表正是为此目的而构建的,它支持以 近似 恒定的时间进行快速查找。我用“近似”来描述,是因为一旦出现冲突,查找用时可
C#里用Dictionary<int, int>一次遍历解决问题。
public class Solution {
public int[] TwoSum(int[] nums, int target) {
Dictionary <int,int> numberDict = new Dictionary<int, int>();
for(int i = 0; i < nums.Length; i++)
{
int targetNumber = target - nums[i];
if(numberDict.ContainsKey(targetNumber))
{
return new int[]{numberDict[targetNumber], i};
}
else if(!numberDict.ContainsKey(nums[i]))
{
numberDict.Add(nums[i], i);
}
}
return null;
}
}