📅  最后修改于: 2023-12-03 15:06:30.256000             🧑  作者: Mango
有时候,我们需要从无序的 Array 中查找所有连续的数字范围,这对于数据分析和信息处理非常有用。在本文中,我们将教你如何使用 JavaScript 和 Python 实现该功能。
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 中可以使用递增的数列来实现该功能。首先,我们需要将 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 实现查找所有连续数字范围的方法。希望本文能对你有所帮助。