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

如何判断数组前X个元素有序且最后一个元素为0?

如何灵活判断数组前X个元素有序且最后一个元素为0

核心需求拆解

要判断的数组需要同时满足两个条件:

  1. 数组的最后一个元素必须是0
  2. 除最后一个元素外,前面的所有元素是从1开始的连续递增序列(比如示例中的1到15,或是更短的1、2等)

灵活实现方案

以下是不依赖固定数组的通用判断函数,适配任意长度的符合条件的数组:

const isSortedWithZeroAtEnd = (array) => {
  // 空数组直接返回false
  if (array.length === 0) return false;
  // 检查最后一位是否为0
  if (array[array.length - 1] !== 0) return false;
  // 遍历前n-1个元素,验证是否是1开始的连续递增序列
  for (let i = 0; i < array.length - 1; i++) {
    if (array[i] !== i + 1) {
      return false;
    }
  }
  return true;
};

逻辑说明

  1. 边界处理:空数组不满足任何条件,直接返回false;如果数组只有一个元素,那它必须是[0]才会返回true
  2. 末尾校验:先检查最后一位是否为0,不满足则直接返回false,减少不必要的遍历
  3. 连续递增校验:遍历前length-1个元素,每个位置i的元素必须等于i+1,确保序列是1、2、3...的连续递增状态

测试用例验证

  • 合法示例:isSortedWithZeroAtEnd([1,2,3,...,15,0]) → 返回true
  • 短合法数组:isSortedWithZeroAtEnd([1,2,0]) → 返回true;isSortedWithZeroAtEnd([0]) → 返回true
  • 非法情况:
    • 末尾非0:isSortedWithZeroAtEnd([1,2,3]) → 返回false
    • 前序元素不连续:isSortedWithZeroAtEnd([1,3,0]) → 返回false
    • 前序元素顺序错误:isSortedWithZeroAtEnd([2,1,0]) → 返回false

对比原有实现的优势

原有代码通过固定数组的JSON字符串对比来判断,只能匹配特定长度和内容的数组。新实现则可以适配任意长度的符合规则的数组,灵活性和通用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:06:24