一、所有小于3的索引子列表
题目:
整数列表中找出子列表的起始索引,要求子列表的连续5个值都小于3,将所有起始索引放进一个列表。定义一个FindSublistStartIndices方法,该方法接受一个整数列表、子列表的长度和阈值,并返回所有满足子列表中的值都小于阈值的起始索引。
在Main方法中,我们使用这个方法打印出所有满足条件的起始索引。
二、程序
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<int> numbers = new List<int> {5, 2, 1, 4, 5, 6, 1, 2, 1, 2, 1,2,1,2};
int sublistLength = 5;
int threshold = 3;
var startIndices = FindSublistStartIndices(numbers, sublistLength, threshold);
foreach (var index in startIndices)
{
Console.WriteLine(index);
}
}
public static IEnumerable<int> FindSublistStartIndices(List<int> numbers, int sublistLength, int threshold)
{
for (int i = 0; i < numbers.Count - sublistLength + 1; i++)
{
var sublist = numbers.GetRange(i, sublistLength);
if (sublist.All(n => n < threshold))
{
yield return i;
}
}
}
}
运行结果:
Start index of sublist with consecutive values < 3: 6
6
7
8
9