1. 程式人生 > >C# 寫 LeetCode easy #1 Two Sum

C# 寫 LeetCode easy #1 Two Sum

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)