在一个数组中,寻找两个数的和等于目标值。
例如:[2,7,8,6] 目标值为9 那么输出[0,1]
public class Solution {
public int[] TwoSum(int[] nums, int target) {
Dictionary<int,int> dic = new Dictionary<int,int>();//空间换时间
for(int i = 0;i<nums.Length;i++)
{
int complement = target - nums[i];//通过计算获取另外一个的Key值
if(dic.ContainsKey(complement))
{
return new int[]{dic[complement],i};//得到索引
}
if(!dic.ContainsKey(nums[i]))
dic.Add(nums[i],i);//缓存到哈希表中
}
return null;
}
}缓存一个使用值作为Key的哈希表,这样就可以通过目标值和一个加值获取到另外一个加值了,当然它得存在。