将整数列表添加到整数列表中

时间:2019-04-02 15:00:03

标签: c# list foreach

我正在尝试对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 以数字为单位遍历每个项目 创建一个列表三元组,获取值, 并将它们添加到myList中。 我知道问题是由于int列表的原因,我正在为此添加一个列表。 因此,triplet应该是int列表的列表。 我想这就是我要如何用一个列表填充一个int列表的列表?

1 个答案:

答案 0 :(得分:0)

第一个错误是因为for循环内的List与表达式返回的类型不同。 GroupBy返回List<System.Linq.IGrouping<int, int>>,因此可以通过更改表达式以返回整数列表或更改类型以匹配返回值(List<System.Linq.IGrouping<int, int>>)来解决。我认为更改表达式可以更好地了解之后的价值。 第二个错误是因为您的方法返回类型不同于您要返回的类型。您的声明建议您返回IList<IList<int>>,但myList对象为List<List<int>>。它们需要匹配,因此可以更改方法声明或myList对象类型,以便它们匹配。我猜你的声明可能是正确的,所以我将myList对象更改为匹配。