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

如何查找未排序数组中相邻重复元素对的对应索引

解决方案

你当前的实现通过indexOf匹配全局首次出现位置,会筛选出所有非首次出现的重复元素,无法区分是否为相邻重复,和需求不匹配。另外原有代码还存在变量引用错误,函数作用域内没有定义totalY变量,直接调用会抛出引用错误。

实现思路

由于题目明确相邻重复对仅存在1次,我们只需遍历数组时仅对比当前元素与前一位元素的值,匹配成功直接返回对应索引即可,不需要额外处理非相邻重复项,时间复杂度为O(n),空间复杂度为O(1)。

代码实现

仅返回索引对的版本

function findAdjacentDuplicate(arr) {
  // 从索引1开始遍历,逐位和前一位元素对比
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] === arr[i - 1]) {
      // 找到相邻重复对,直接返回两个元素的索引
      return [i - 1, i];
    }
  }
  // 无匹配场景返回空数组,可根据业务需要调整返回值
  return [];
}

同时返回重复值和索引的版本

如果需要同时获取重复元素的值,可以使用如下实现:

function findAdjacentDuplicate(arr) {
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] === arr[i - 1]) {
      return {
        duplicateValue: arr[i],
        indexes: [i - 1, i]
      };
    }
  }
  return null;
}

测试示例

输入测试数组:[9, 2, 5, 5, 7, 1, 2]
调用函数返回结果为[2,3],非相邻的重复元素2不会被识别,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:12:03