You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

除已有方法外,如何更高效检查数字是否在指定范围内?

更高效的数字范围检查方法?

嘿,好问题!咱们先拆解下你提到的两种方法的效率,再聊聊最优解:

先说说你给出的两种方法的效率差异

  • Enumerable.Range(1,100).Contains(number):这个方法的问题在于它会先创建一个包含1到100所有整数的序列,然后遍历整个序列去匹配目标数字。不仅要额外分配内存存储这个序列,遍历的时间复杂度还是O(n)——如果范围更大(比如1到10000),开销会明显上升,完全没必要。
  • if (x >= 1 && x <= 100):这是直接的数值比较操作,时间复杂度是O(1),几乎没有任何额外开销。CPU可以直接完成这两次逻辑判断,不需要创建对象、不需要遍历,效率拉满。

有没有更高效的实现?

其实第二种方法已经是最优解了——你找不到比常数时间的直接比较更高效的方式了。不过如果想让代码更可读、更易于复用,可以把这个逻辑封装成方法,本质还是用数值比较:

比如封装成C#扩展方法:

public static bool IsInRange(this int number, int min, int max)
{
    // 确保min <= max,避免逻辑错误
    if (min > max)
        (min, max) = (max, min);
    
    return number >= min && number <= max;
}

使用的时候就可以这么写:

bool isInRange = number.IsInRange(1, 100);

这样代码更清晰,同时效率和直接写x >=1 && x <=100完全一致,没有任何额外开销。

如果是其他特殊场景(比如非连续的数值范围),可能需要用HashSet之类的结构来优化查找,但对于连续的整数范围,直接的数值比较永远是最高效的选择。

内容的提问来源于stack exchange,提问作者Croampa Daniel Nestiutorul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:09:40