数组中找两数之和的问题

在一个数组中,寻找两个数的和等于目标值。

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


首页 我的博客
粤ICP备17103704号