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.