📌  相关文章
📜  从 Array 中查找所有连续数字范围(1)

📅  最后修改于: 2023-12-03 15:06:30.256000             🧑  作者: Mango

从 Array 中查找所有连续数字范围

有时候,我们需要从无序的 Array 中查找所有连续的数字范围,这对于数据分析和信息处理非常有用。在本文中,我们将教你如何使用 JavaScript 和 Python 实现该功能。

JavaScript 实现

JavaScript 中可以使用双指针的方式来实现该功能。首先,我们需要给 Array 排序,然后使用双指针从头到尾扫描 Array ,找到连续的数字范围。以下是 JavaScript 代码示例:

function findContinuousRanges(arr) {
  arr.sort((a, b) => a - b); // 升序排列
  const results = [];
  let start = 0, end = 0;
  for (let i = 0; i < arr.length; i++) {
    if (arr[i + 1] - arr[i] === 1) { // 找到连续范围的结束位置
      end++;
    } else {
      if (end > start) {
        results.push(`${arr[start]}~${arr[end]}`);
      } else {
        results.push(`${arr[start]}`);
      }
      start = end = i + 1; // 重置指针
    }
  }
  return results;
}

const arr = [1, 3, 2, 4, 5, 7, 6, 9, 8, 0];
console.log(findContinuousRanges(arr)); // ["0~5", "6~9"]
Python 实现

Python 中可以使用递增的数列来实现该功能。首先,我们需要将 Array 升序排列,然后使用 while 循环从头到尾扫描 Array ,找到连续的数字范围。以下是 Python 代码示例:

def find_continuous_ranges(arr):
    arr.sort() # 升序排列
    results = []
    i = 0
    while i < len(arr):
        start = end = arr[i]
        while i < len(arr) - 1 and arr[i+1] - arr[i] == 1: # 找到连续范围的结束位置
            end = arr[i+1]
            i += 1
        if end > start:
            results.append(f"{start}~{end}")
        else:
            results.append(f"{start}")
        i += 1
    return results

arr = [1, 3, 2, 4, 5, 7, 6, 9, 8, 0]
print(find_continuous_ranges(arr)) # ['0~5', '6~9']

以上就是用 JavaScript 和 Python 实现查找所有连续数字范围的方法。希望本文能对你有所帮助。