题目:
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
我的理解:
当看到这一题时,我的第一想法是暴力求解一样列举,但是发现内存和用时过大,随后便想起c#中有字典(value和key一一对应)这一数据结构,利用该数据结构能大大减少内存和减低时间。
代码:
public class Solution {
public int[] TwoSum(int[] nums, int target){
Dictionary<int,int> map=new Dictionary<int,int>();//字典第一Int为value第二为key,其中key的值与nums的下标一一对应
for(int i=0;i<nums.Length;i++)
{
if(map.ContainsKey(target-nums[i]))//判断字典是否与nums[i]相加为target的数,存在则返回key以及i
{
return new int[]{map[target-nums[i]],i};
}
else
{
map[nums[i]]=i;
}
}
return new int[]{0,0};
}
}
感悟:第一次刷力扣难度不是太高,不过如果之前没练过短时间内写完这一题也是蛮难的。+