双指针遍历算法

57 阅读1分钟

双指针 遍历 算法。。。

一般用来遍历 数组 或 字符串 的 对称操作。

for (int min = 0, max = arr.length - 1; min < max; min++, max--) {
  // 循环体
}

初始化:

int min = 0, max = arr.length - 1

min:从 数组 开头 开始 (索引0)

max:从 数组 末尾 开始 (最后一个元素的索引)

循环条件:

min < max

当 左指针 小于 右指针 就 继续循环。

两者相遇 或 交叉时 停止。

迭代操作

min++, max--

每次循环后,左指针 向右,右指针 向左。

两者向中间靠拢。


数组反转

public static void reverseArray(int[] arr) {
  for (int min = 0, max = arr.length - 1; min < max; min++, max--) {
    // 交换首尾元素
    int temp = arr[min];
    arr[min] = arr[max];
    arr[max] = temp;
  }
}