Java 中检查给定数组是否为镜像逆

2025年3月17日 | 阅读 3 分钟

这是一个非常有趣的问题,经常出现在 Google、Amazon、TCS、Accenture 等顶级 IT 公司的面试中。通过解决这个问题,面试官希望检查面试者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将使用不同的方法和逻辑 检查给定数组在 Java 中是否为镜像逆向数组。此外,我们还将创建相应的 Java 程序。

问题陈述

我们有一个名为 a[] 的数组,任务是找出该数组是否为镜像逆向数组。如果数组是镜像逆向数组,则打印“是”,否则打印“否”。

数组的反向

数组的反向可以通过从右到左写入数组来找到。

示例

Check If the Given Array is Mirror Inverse in Java

数组的镜像逆向

如果我们用相应的数组元素交换数组索引并重写数组值。如果我们得到的逆向数组等于给定数组,则该数组称为镜像逆向数组。让我们通过示例来理解。

注意:反向数组和镜像逆向数组不是一回事。

示例 1

输入: arr[] = [3, 4, 2, 0, 1, 5, 6}

输出:

在给定数组中

索引(0) -> 值(3)

索引(1) -> 值(4)

索引(2) -> 值(2)

索引(3) -> 值(0)

索引(4) -> 值(1)

索引(5) -> 值(5)

索引(6) -> 值(6)

为了找到数组的逆向,交换给定数组的索引和值。因此,我们得到

索引(3) -> 值(0)

索引(4) -> 值(1)

索引(2) -> 值(2)

索引(0) -> 值(3)

索引(1) -> 值(4)

索引(5) -> 值(5)

索引(6) -> 值(6)

逆向 arr[] = {3, 4, 2, 0, 1, 5, 6}

我们观察到逆向数组等于给定数组。因此,它是给定数组的镜像逆向数组。

示例 2

输入: arr[] = {1, 3, 5, 7, 9}

索引(0) -> 值(1)

索引(1) -> 值(3)

索引(2) -> 值(5)

索引(3) -> 值(7)

索引(4) -> 值(9)

为了找到数组的逆向,交换给定数组的索引和值。因此,我们得到

索引(1) -> 值(0)

索引(3) -> 值(1)

索引(5) -> 值(2)

索引(7) -> 值(3)

索引(9) -> 值(4)

逆向 arr[] = {0, 1, 2, 3, 4}

我们观察到逆向数组不等于给定数组。因此,它不是给定数组的镜像逆向数组。

检查给定数组是否为镜像逆向数组的 Java 程序

  1. 通过交换给定数组的数组值和索引来创建新数组。
  2. 比较两个数组。如果新数组等于原始数组,则给定数组是镜像逆向数组。

MirrorInverseArray1.java

输出

No

让我们看看另一种方法。

另一种方法是遍历给定数组,如果所有索引都满足条件 array[array[index]] = index,则给定数组是镜像逆向数组。此方法优于上述方法。

MirrorInverseArray2.java

输出

The given array is mirror inverse.