我的算法在哪里有缺陷,无法在求和除以k的数组中找到所有对
本文关键字:数组 有缺陷 在哪里 算法 求和 我的 | 更新日期: 2023-09-27 17:59:29
我不明白我做错了什么。
代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution
{
static void Main(String[] args)
{
string[] lineParts = Console.ReadLine().Split(' ');
int k = Convert.ToInt32(lineParts[1]);
int[] arr = Array.ConvertAll(Console.ReadLine().Split(' '), Int32.Parse);
var indices = Enumerable.Range(0, arr.Length - 1);
int pairsDivideK = (from i in indices
from j in indices
where i < j && ((arr[i] + arr[j]) % k == 0)
select 1).ToList().Count / 2;
Console.WriteLine(pairsDivideK);
}
}
输入:
6 3
1 3 2 6 1 2
预期输出:
5
我的输出:
1
首先,您不必除以2。由于where i < j
条件,因此没有重复。
第二:你必须使用Enumerable.Range(0, arr.Length)
(没有-1
),因为第二个参数不是上限,而是元素的数量。
所以你的代码应该是:
...
var indices = Enumerable.Range(0, arr.Length);
int pairsDivideK = (from i in indices
from j in indices
where i < j && ((arr[i] + arr[j]) % k == 0)
select 1).ToList().Count;
Console.WriteLine(pairsDivideK);