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

如何按缺失整数拆分连续整数数组并生成arrayFinal?

解决数组按缺失整数拆分的问题

我来帮你搞定这个数组拆分的需求!核心思路是通过遍历数组,跟踪当前连续的子数组,当遇到不连续的整数时,就把当前子数组存入最终结果,再开启新的子数组。这里不需要用字符串的split方法,直接通过遍历就能实现,逻辑很清晰。

先举个直观的例子

假设输入数组是 [1,2,3,5,6,8,9],缺失了4和7,那么最终的arrayFinal应该是:
[[1,2,3], [5,6], [8,9]]

JavaScript实现代码

function splitArrayByMissingNumbers(arr) {
  // 处理空数组的边界情况
  if (!arr || arr.length === 0) return [];
  
  const arrayFinal = [];
  // 初始化当前子数组,放入第一个元素
  let currentSubarray = [arr[0]];
  
  for (let i = 1; i < arr.length; i++) {
    // 检查当前数字是否和前一个数字连续(差值为1)
    if (arr[i] === arr[i-1] + 1) {
      currentSubarray.push(arr[i]);
    } else {
      // 遇到缺失的整数,把当前子数组存入结果,重置当前子数组
      arrayFinal.push(currentSubarray);
      currentSubarray = [arr[i]];
    }
  }
  // 别忘了把最后一个子数组加入结果
  arrayFinal.push(currentSubarray);
  
  return arrayFinal;
}

// 测试示例
const inputArray = [1,2,3,5,6,8,9];
const arrayFinal = splitArrayByMissingNumbers(inputArray);
console.log(arrayFinal); // 输出 [[1,2,3], [5,6], [8,9]]

Python实现代码

如果你用Python,逻辑是完全一致的:

def split_array_by_missing_numbers(arr):
    if not arr:
        return []
    
    array_final = []
    current_subarray = [arr[0]]
    
    for i in range(1, len(arr)):
        if arr[i] == arr[i-1] + 1:
            current_subarray.append(arr[i])
        else:
            array_final.append(current_subarray)
            current_subarray = [arr[i]]
    
    # 添加最后一个子数组
    array_final.append(current_subarray)
    return array_final

# 测试示例
input_array = [1,2,3,5,6,8,9]
array_final = split_array_by_missing_numbers(input_array)
print(array_final)  # 输出 [[1,2,3], [5,6], [8,9]]

逻辑说明

  1. 先处理空数组的边界情况,避免运行报错
  2. 初始化最终结果数组arrayFinal,以及当前正在收集的子数组currentSubarray
  3. 从第二个元素开始遍历数组,判断当前元素是否和前一个元素连续(差值为1)
  4. 连续就加入当前子数组,不连续则将当前子数组存入结果,重置当前子数组
  5. 遍历结束后,一定要把最后一个子数组也加入结果(因为循环里不会处理最后一段连续序列)

这个方法的时间复杂度是O(n),只需要遍历一次数组,效率很高,而且逻辑易懂,适合各种场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:18:25