【发布时间】:2017-04-21 12:02:30
【问题描述】:
我正在尝试编码挑战,但遇到了困难。
这个想法是在List<int> 中找到最小的整数,并返回一个新列表,删除该值但保留原始顺序。
我正在尝试仅使用 for 循环来做到这一点。
我遇到的问题是,当我迭代并将每个值与其他值进行比较时,我的最终结果只会出现一个数字小于另一个的最后一个实例,不一定是最小的数字。
例如,如果我传入List<int> { 1, 2, 3, 4, 5 },结果会返回为 4。
我意识到在重复的列表中使用 Min 和 Remove(或类似名称)会更容易,但我故意让自己过得很艰难。
public static List<int> RemoveSmallest(List<int> numbers)
{
var newList = new List<int>();
var lowest = 0;
for (var i = 0; i <= numbers.Count - 1; i++)
{
for (var n = 0; n <= numbers.Count - 1; n++)
{
if (numbers[i] < numbers[n])
{
lowest = numbers[i];
}
}
}
foreach (var num in numbers)
{
if (num != lowest)
{
newList.Add(num);
}
}
newList.Remove(lowest);
return newList;
}
【问题讨论】:
-
首先,你不需要嵌套循环。
-
想扩展一下吗?