Я пытаюсь решить проблему leetcode twoSum, где:
Учитывая массив целых чисел, возвращайте индексы двух чисел так, чтобы они складывались до определенной c цели. Вы можете предположить, что у каждого ввода будет ровно одно решение, и вы не можете использовать один и тот же элемент дважды.
Итак, вот мой метод:
static public int[] TwoSum(int[] nums, int target)
{
Dictionary<int, int> numberAndComplement = new Dictionary<int, int>();
for (int i = 0; i < nums.Length; i++)
{
int complement = target - (int)nums[i];
if (numberAndComplement.ContainsValue(nums[i]))
{
int[] vs = { numberAndComplement.FirstOrDefault(x => x.Value == complement).Key, i};
return vs;
}
numberAndComplement.Add(i, complement);
}
return new int[] { 0, 0 };
При передаче [ 3,2,4], 6 Я ожидал, что в качестве ответа будут индексы [1,2], но вместо этого я получаю [0,2], что не имеет смысла, потому что это не ошибка на одну ошибку. Так как я использую FirstOrDefault, я должен получить 1 обратно, и это сводит меня с ума.