
本文介绍如何用一个 for 循环正确遍历数组中所有相邻元素对(如 [a₀,a₁], [a₁,a₂], …),避免嵌套循环造成的重复与越界问题,并提供可直接运行的代码示例和关键注意事项。
本文介绍如何用一个 for 循环正确遍历数组中所有相邻元素对(如 [a₀,a₁], [a₁,a₂], …),避免嵌套循环造成的重复与越界问题,并提供可直接运行的代码示例和关键注意事项。
在处理数组时,若目标是依次比较或操作相邻两个元素(例如判断是否递增、计算差值、验证相邻和等),常见误区是使用双重 for 循环——这会导致所有元素两两组合(包括非相邻、顺序颠倒、甚至自身配对),不仅逻辑错误,时间复杂度也升至 O(n²)。
✅ 正确做法:仅需单层 for 循环,索引 i 从 0 遍历至 arr.length - 2(即 i < arr.length - 1),每次访问 arr[i] 和 arr[i + 1] 即可构成一组合法相邻对。
以下是标准实现:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const arr = [1, 3, 5, 9, 11, 12];
for (let i = 0; i < arr.length - 1; i++) {
const current = arr[i];
const next = arr[i + 1];
console.log(`Pair: [${current}, ${next}]`);
}
// 输出:
// Pair: [1, 3]
// Pair: [3, 5]
// Pair: [5, 9]
// Pair: [9, 11]
// Pair: [11, 12]⚠️ 关键注意事项:
立即学习“Java免费学习笔记(深入)”;
- 边界条件必须为 i < arr.length - 1:若写成 i < arr.length,当 i 取到最后一项索引时,arr[i + 1] 将为 undefined,导致逻辑错误;
- 无需嵌套循环:原问题中双重循环 for(i)...for(j)... 生成的是笛卡尔积(共 36 组),完全偏离“相邻对”需求;
- 空数组或单元素数组安全:当 arr.length <= 1 时,循环自动不执行,无越界风险;
- 扩展应用:此模式适用于滑动窗口大小为 2 的所有场景,如检测单调性、计算相邻差、查找峰值等。
总结:相邻对遍历是基础但高频的操作,牢记「单循环 + i < length - 1」这一范式,即可简洁、高效、健壮地完成任务。

















