检查两个数组是否相等17 Mar 2025 | 6 分钟阅读 让我们通过一些例子来理解这个问题。 如果数组 arr1=[1,2,3,4,5] 和 arr2 = [5,4,3,2,1] 是两个数组,我们需要检查这两个数组是否相等。 如果两个数组具有相同的元素,并且这些元素在各自数组中的出现频率相同,则认为它们相等。 让我们以上面的例子为例 arr1 中的所有元素都存在于 arr2 中,并且 arr1 中的每个元素都只出现一次。同样,arr2 中的元素也只出现一次,并且没有元素存在于 arr1 中但不存在于 arr2 中,反之亦然。 让我们再举一个例子 如果 arr1=[1,2,3,4,4] 且 arr2=[1,1,2,3,4] 在上面的两个数组中,arr1 中存在的所有元素也都存在于 arr2 中,但在 arr1 中,元素 4 出现了两次,而在 arr2 中,它只出现了一次。元素 1 在 arr2 中出现了两次,但在 arr1 中只出现了一次,因此我们可以得出结论,两个数组不相等。 让我们看最后一个例子 Arr1=[1,2,3,4] arr2=[2,3,4,5],在这种情况下,两个数组不相等,因为元素 1 存在于 arr1 中,但不存在于 arr2 中;元素 5 存在于 arr2 中,但不存在于 arr1 中,因此它们不相等。 我们需要部署一个代码来确定两个输入数组是否相等。 代码 输出 ![]() ![]() ![]() 解释 让我们讨论代码的逻辑 我们需要找出 arr1 中的所有元素是否与 arr2 中的所有元素相等,且频率相同。 所以,首先,我们需要对两个数组进行排序,然后从第一个索引开始比较两个数组的元素。 即,在对两个数组进行排序后,我们需要检查两个数组中的所有元素是否在相同的索引处相等。 特定索引处的元素应该相同,因为我们正在对数组进行排序,并且为了使两个数组相等,它们还需要具有相同的频率,以便两个数组在相同的索引处具有相同的值。 因此,我们的逻辑是对给定的数组进行排序,然后比较两个数组的元素。 首先,我们需要从用户那里获取输入大小和数组元素。 上述代码行将从用户那里获取 n 大小和两个数组元素的输入。 接下来,我们需要对两个数组进行排序。我们有一个直接的函数叫做 sort,它接受两个数组参数。 上述两行代码将对两个数组进行排序。 接下来,我们需要验证两个数组中所有元素在各自索引处是否相等,为此,我们需要一个 for 循环来遍历。 如果任何索引处的值不相等,我们将打印“两个数组不相等”;如果对于整个数组,所有值都自动相等,则将打印“两个数组相等”。 为了打印数组是否相等,我们需要上面的代码行;如果两者不相等,它将打印“两个数组不相等”并退出代码。 这就是我们将执行代码以检查两个数组是否相等的方式。 让我们讨论时间和空间复杂度 时间复杂度:如果我们忽略输入所花费的时间,那么时间主要消耗在对给定数组进行排序上,然后我们需要遍历数组以检查两个数组的所有索引值是否相等。 因此,arr1 排序的总时间为 O(n*log*n) + arr2 排序的总时间为 O(n*log(n)),所以对于排序,我们将其视为 O(n*log(n))。 接下来,我们需要遍历时间,即 O(n)。 总花费时间为 O(n)+O(n*log(n))。 最终,我们将时间复杂度视为 O(n*log(n)) 空间复杂度 我们这里没有使用任何额外的空间;我们只使用了给定的输入数组,所以空间是常数 O(1) 时间复杂度: O(n*log(n)) 空间复杂度: O(1) 让我们讨论另一种方法来降低上述代码的时间复杂度 为了降低上述代码的时间复杂度,我们需要使用哈希表。 逻辑是。首先,我们需要将数组 1 的所有元素推入映射中,然后,在遍历第二个数组时,我们需要减少映射中元素的计数;如果元素的计数为零,或者如果元素不存在于映射中,则表明该数字可能出现频率不同,或者存在仅在一个数组中出现的缺失数字。 如果上述两个条件对于整个数组都不满足,那么我们可以说两个数组相等。 所以,让我们部署代码,使用映射来查找两个数组是否相等。 代码 输出 ![]() ![]() ![]() 解释 首先,我们需要输入数组的大小和数组元素。 上述代码将处理从用户获取输入的情况。 在从用户获取 arr1 元素的输入时,我们还将元素推入名为 mp 的映射中。 因此,在获取输入值时,它们被插入到映射中。 将其插入到映射中后,我们需要遍历第二个数组并检查两个条件:一个是元素是否不存在于映射中,另一个是元素计数是否为 0。如果满足任何条件,我们需要打印两个数组不相等,然后我们退出代码。 如果上述两个条件对于整个第二个向量元素都不满足,我们打印两个数组相等。 我们需要上述代码来打印数组是否相等。 这就是我们将如何实现代码以了解两个数组是否相等。 让我们讨论一下代码的时间和空间复杂度 时间复杂度:如果我们忽略获取输入所花费的时间,则只需要遍历第二个数组,在最坏的情况下,遍历第二个数组所花费的时间是 O(n)。 时间复杂度:O(n)。 空间复杂度:在此代码中,我们需要哈希映射的空间来存储第一个数组的值,因此所需的空间为 O(N)。 空间复杂度:O(n)。 下一个主题从给定层序遍历构建 BST |
我们请求您订阅我们的新闻通讯以获取最新更新。