C# 寫 LeetCode easy #1 Two Sum
阿新 • • 發佈:2018-11-28
1、Two Sum
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].
程式碼:
static void Main(string[] args) { int[] nums = { 2, 7, 11, 15 }; var res=Twosum(nums, 9); Console.WriteLine($"[{res[0]},{res[1]}]"); Console.ReadKey(); } public int[] TwoSum(int[] nums, int target) { var dictionary=new Dictionary<int,int>(); for (int i = 0; i < nums.Length; i++) {var nn = target - nums[i]; if (dictionary.ContainsKey(nn)) { return new int[]{ dictionary[nn],i}; } dictionary[nums[i]] = i; } throw new ArgumentException(); }
解析:
輸入:整型陣列num和整型目標值。
輸出:一個數組,由得到目標值的兩個數的索引構成。
程式碼思想:
首先,字典的key是num陣列中的元素,value是這個元素所對應的索引。
其次,通過遍歷整個陣列,即假設已知第一個數,求出第二個數並判斷是否在字典中,若在,則返回第二個數在字典中的value值與第一個數的索引組成的陣列。若不在,將第一個元素和索引新增到字典中,繼續判斷第二個數。
最後,若找到會返回陣列,若沒有則丟擲異常。
時間複雜度:O(n)