基数与序数的规律

对于一个数据, 要先判断是基数还是序数, 如果要计数,还要考虑是否包括边界

  • 基数: 绝对的,有一个基底数, 日常生活中基底是1; 编程中一般是0; 常见的基数概念有 数量, 个数, 体积, 面积, 时间段, 年龄(周岁), 分数
  • 序数: 相对的, 表示先后顺序, 常见的概念: 位次, 时间点
    • 端点的开闭规律: 全开

​ 基本的转换规律: 基数 = 序数 - based + 1

常见场景

  1. 从日常的1-based转换成0-based: 访问“第n个元素”时,索引是 n-1
  2. 计算从第m到第n之间的数量为 n-m
  3. 端点的开闭规律: 若要截取从第 m 到第 n 个元素(1-based)
    1. 半开半闭区间, 实际索引范围是 [m-1, n), 个数是n-m
    2. 全开区间, 实际索引范围是 (m, n), 个数是n-m-1
    3. 全闭区间 , 实际索引范围是 [m-1, n-1], 个数是n-m+1
  4. 字符串长度为 len,最后一个字符的索引是 len - 1(因0-based)
  5. 一个序数可以加减一个基数, 表示顺序的移动