【发布时间】:2014-01-27 10:55:35
【问题描述】:
我有一个 List myList = new List() { 8 ,5 ,3 ,3 ,3, 3, 3 ,3 ,4 ,5 ,3 , 8 };
假设我选择了列表中的第 5 个元素,即 3。
我想找到给定元素的相似值的开始和结束索引,只要它是相似的
所以,我需要前 3 个(在本例中为 2)和最后 3 个(在本例中为 7)的索引。
为此,我决定使用 while 循环转到列表的开头,并使用另一个 while 循环转到列表的末尾。
但这感觉像是实现预期结果的昂贵/缓慢的方式。
您知道更快/更好的方法吗?
谢谢!
【问题讨论】:
-
如果您选择第二个元素 (5),正确的结果应该是什么?
-
对,应该是1,1
-
如果感觉很慢,那是因为它不能假设您的列表没有任何内容可以实现更智能的行为。该列表是否有一些可以提供帮助的有保证的财产?如果没有,没有比这更好的了。
-
您是在挑选指数还是价值?因为在上面的列表中,3 也排在第 10 位。
-
@Naveen 我正在选择价值。第10位的3不应该考虑
标签: c# performance c#-4.0 logic