数字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;
}
}

浙公网安备 33010602011771号