【发布时间】:2014-11-13 13:23:15
【问题描述】:
我正在尝试对字符串列表(大小为 N)进行切片,并根据被切片为相等部分 (X) 的列表返回一个范围。
例如,如果我有一个包含 10 个元素的列表,而我的层数是 5。
元素 0 和 1 是第 1 层。元素 2 和 3 是第 2 层。在方法结束时,我返回参数中指定的层。
我正在努力解决的问题是列表计数是否不能被层数整除。例如,23 / 5 = 4.6。所以这意味着它们将是 5 组 4 组,然后剩下 3 组。我希望结果是 5、5、5、5、3 的 5 层(最后一层只是剩余的元素数量)。
到目前为止,我已经包含了我的代码,但我真的很困惑如何确保列表大小尽可能相等以及如何处理余数。
// Gets a list and returns a range by the tier specified
public List<string> GetRangeByTierIndex(List<string> listToDivide, int numOfTiers, int tierIndexToGet)
{
int numOfElementsPerList = listToDivide.Count / numOfTiers;
int index = (tierToGet - 1) * numOfElementsPerList;
return listToDivide.GetRange(index, numOfElementsPerList);
}
注意:忘了提一下,我也不能使用 LINQ(AOT 和 iOS 问题)。
【问题讨论】:
-
对不起,我应该在我不能使用 LINQ 之前提到。
-
我相信也有一些非 linq 解决方案
-
您的第一个 10 元素和 5 层示例是 5 组 2,但在您的 23 元素和 5 层的第二个示例中,您说的是 4 组 5。不应该是 5 组4?
-
是的,应该是 5 套 4 套 :)