我正在尝试对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列表的列表?
答案 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对象更改为匹配。