数字520大配对

题目为,给你一个数组,计算这个数组里面的值相加为520的次数,配对过一次的不能再使用

字典方法
    class Test
    {
    static void Main(string[] arg)
    {
       int[] a=new int[]{20,260,20,260,500,500};
       System.Console.WriteLine(Count(a));
    }

    static int Count(int[] nums)
    {
        if(nums==null) return 0;
        int count=0;
        Dictionary<int,int> dict=new Dictionary<int,int>();
        foreach (var n in nums)
        {
            var diff=520-n;
            if(dict.ContainsKey(diff))
            {
                count++;
                dict[diff]--;
                if(dict[diff]==0)
                {
                    dict.Remove(diff);
                }
            }
            else
            {
                if(!dict.ContainsKey(n))
                {
                    dict[n]=0;
                }
                dict[n]++;
            }
        }
        return count;
    }
    }

数组
    class Test
    {
    static void Main(string[] arg)
    {
       int[] a=new int[]{20,260,20,260,500,501};
       System.Console.WriteLine(Count(a,520));
    }

    static int Count(int[] nums,int sum)
    {
        if(nums==null) return 0;
        int count=0;
        var dict=new int[sum+1];
        foreach (var n in nums)
        {
            var diff=sum-n;
            if(dict[diff]>0)
            {
                count++;
                dict[diff]--;
            }
            else
            {
                dict[n]++;
            }
        }
        return count;
    }
    }
posted @ 2022-02-09 22:21  Ariaaaaa  阅读(11)  评论(0)    收藏  举报