using System;
using System.Collections.Generic;

namespace Leet_Code
{
class Program
{
/*给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。



    示例:

    给定 nums = [2, 7, 11, 15], target = 9

    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回[0, 1]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/two-sum
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。*/
    static void Main(string[] args)
    {
        int[] nums = new int[] { 2, 15, 11, 7 };
        int [] ans = LeetCodeone(nums, 9);
        foreach (var item in ans)
        {
            Console.WriteLine(item);
        }
    }
    
    public static int [] LeetCodeone(int[] nums,int target)
    {
        Dictionary<int, int> map = new Dictionary<int, int>();
        for (int i = 0; i < nums.Length; i++)
        {
            int dis = target - nums[i];
            if (map.ContainsKey(dis) && map[dis]!=i)
            {
                return   new int[] { map[dis],i};
            }
            
            if(!map.ContainsKey(nums[i]))
            {
                map.Add(nums[i], i);
            }
        }
        return new int[] { 0, 0 };
    }
//给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
public static int LengthOfLongestSubstring(string s)
    {

        int max = 0;
        Queue<char> q = new Queue<char>();
        foreach (char c in s)
        {
            while (q.Contains(c))
                q.Dequeue();
            q.Enqueue(c);
            if (q.Count > max)
                max = q.Count;
        }
        return max;
    }

}

}