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

Kotlin:如何以O(1)时间复杂度获取IntRange的元素数量?

Kotlin中O(1)时间获取IntRange的元素数量

当然有,直接用算术计算就行,完全不用循环或者转列表,时间复杂度是O(1)。

核心计算逻辑

IntRange是闭区间(同时包含start和end),所以元素数量的计算公式很明确:

  • 如果start <= end,数量为 end - start + 1
  • 如果start > end,这是个空范围,数量直接为0

可以封装成一个工具函数,用起来更顺手:

fun IntRange.elementCount(): Int {
    return if (start > end) 0 else end - start + 1
}

测试几个例子验证:

  • IntRange(1, 5).elementCount() 返回5,和循环计数结果完全一致
  • IntRange(10, 3).elementCount() 返回0,对应空范围的情况

关于toList().size的问题

你担心的内存问题是真实存在的,而且这个方法也不符合O(1)的要求:

  • 调用toList()会把范围里的所有元素都实例化并存到List中,如果范围很大(比如0到100万),会瞬间占用大量内存,甚至可能触发内存溢出
  • 生成List的过程需要遍历整个范围,时间复杂度是O(n),完全达不到你要的高效要求,所以这个方法绝对不推荐用。

内容的提问来源于stack exchange,提问作者ModdyFire

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:02:03