добавить список целых в список списков целых - PullRequest
0 голосов
/ 02 апреля 2019

Я пробую пробный тест leetCode ..

Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

Может кто-нибудь дать совет, где я иду не так ... пометка

Line 8: Char 30: error CS0029: Cannot implicitly convert type 'System.Collections.Generic.List<System.Linq.IGrouping<int, int>>' to 'System.Collections.Generic.List<int>' (in Solution.cs)
Line 12: Char 16: error CS0266: Cannot implicitly convert type 'System.Collections.Generic.List<System.Collections.Generic.List<int>>' to 'System.Collections.Generic.IList<System.Collections.Generic.IList<int>>'. An explicit conversion exists (are you missing a cast?) (in Solution.cs)

public class Solution {
    public IList<IList<int>> ThreeSum(int[] nums) {

        List<List<int>> myList = new List<List<int>>();

        foreach(var i in nums)
        {
        List<int> triplets = nums.GroupBy(x => x).Where(y => y.Count() >= 3).ToList();
            myList.Add(triplets);
        }

        return myList;
    }
}

SO ThreeSum - это интерфейс списка списков. Итак, я создаю свой возвращаемый объект myList Итерация по каждому элементу в числах создание триплета List, получение значений, и добавив их в myList. Я знаю, что проблема из-за списка int списков, и я добавляю список к этому. Так что триплеты должны быть списком int-списков. Я думаю, тогда вопрос в том, как мне заполнить список списков int одним списком ??

1 Ответ

0 голосов
/ 02 апреля 2019

Первая ошибка связана с тем, что List внутри цикла for отличается от типа, возвращаемого выражением.GroupBy возвращает List<System.Linq.IGrouping<int, int>>, поэтому эту проблему можно решить, изменив либо выражение, возвращающее список целых чисел, либо изменив тип в соответствии с возвращаемым значением (List<System.Linq.IGrouping<int, int>>).Я думаю, что изменение выражения будет работать лучше, если посмотреть на то, что вы делаете со значением после.Вторая ошибка связана с тем, что тип возвращаемого вами метода отличается от типа, который вы возвращаете.Ваше объявление предполагает, что вы вернете IList<IList<int>>, однако объект myList - List<List<int>>.Они должны совпадать, поэтому либо измените объявление метода или тип объекта myList, чтобы они соответствовали.Я предполагаю, что ваше объявление, вероятно, правильно, поэтому я бы изменил объект myList для соответствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...