LeetCode|Two Sum

Questioin Description:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

----------------------------------------
Dividing line-----------------------------------------------------------------------------
Here is my anwer.The programming language is C#.The run code status is finished,howerer ,the Submission result is "Time Limit Exceeded".
Obviously,the algorithm complexity does not meet the requirements.
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++){
            dic.Add(i,nums[i]);
        }
        for(int i=0;i<nums.Length;i++)
        {
            int complement=target-nums[i];
            if(dic.ContainsValue(complement))
            {
                    var keys= dic.Where(m => m.Value == complement).Select(q => q.Key);
                    foreach (var item in keys)
                    {
                        if(item==i)
                        {
                            continue;
                        }
                        return new int[] { i, item };
                    }
            }
        }
        throw new Exception("there is no answer");
    }
}

 

 Welcome to discuss technical issues with me.
posted @ 2017-07-06 10:05  向萧  阅读(153)  评论(0编辑  收藏  举报