在一个数组中,寻找两个数的和等于目标值。
例如:[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的哈希表,这样就可以通过目标值和一个加值获取到另外一个加值了,当然它得存在。