LeetCode 1. Two Sum (Easy)

Posted by Lynn on Sunday, February 6, 2022

https://leetcode.com/problems/two-sum/ 題目的要求是給予一個int陣列和目標值,回傳目標值是陣列中哪兩個索引中加起來的。

Example :

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

想了想可以直接用兩個For迴圈暴力解掉,考慮到複雜度的問題這邊改用Dictinary的方式解題,Dictionary是由Key和Value組成,但是Key是不能重複的。

我自己覺得這題的關鍵點在 left = target - num[i] ; 這一行

public class Solution {
    public int[] TwoSum(int[] nums, int target) {
            //宣告Dictionary temp 由兩個int組合
            Dictionary<int, int> temp = new Dictionary<int, int>();
            for (int i = 0; i < nums.Length; i++)
            {
                //把target的值減陣列裡面的元素的值只派給left
                int left = target - nums[i];
                //假如Dictionary裡面有left值,return回去兩值的索引值
                if (temp.ContainsKey(left))
                {
                    return new int[] { temp[left], i };
                }
                //如果temp裡面不存在nums裡的值,temp加入(key(值)、value(索引值))
                if (!temp.ContainsKey(nums[i]))
                {
                    temp.Add(nums[i], i);
                }
            }
            return null;
    }
}
tags: LeetCode