C#数据结构,用于根据范围查找当前项目

时间:2019-03-21 04:28:25

标签: c# algorithm data-structures

我正在寻找一个数据结构或确认不存在的结构,您可以在其中输入项目,并且与该项目的eh开头相关的数值有效。

想象一下,您正试图找出获得高分的奖励。

这些元素看起来像这样: 0-无 100-银星 300-金星

然后,我想根据我的当前分数快速评估我当前的奖励或任何常规项目。如果我通过270,我会获得银星。

当我第一次必须实现这样的东西时,我使用了一个二元组列表,第一个值是数字下限,第二个是项目。当然可以。但是当然,随着列表的增加,查找时间也会增加。

我必须再次实现与此类似但具有标准化值的东西。同样,我可以做同样的事情,但是如果有使用树的更好更好的方法,请指向该方向。

无论结构如何,我都会为标准化和原始值搜索编写一个包装。

1 个答案:

答案 0 :(得分:1)

尝试一下:

var levels = new []
{
    new { score = 0, level = "nothing" },
    new { score = 100, level = "silver" },
    new { score = 300, level = "gold" },
};

var score = 270;

var level = levels.OrderBy(x => x.score).Where(x => x.score <= score).Last().level;

Console.WriteLine(level);

这使我在控制台上silver