当前位置: 首页 > 面试题库 >

查找整数数组中第一个重复元素的程序

黄朗
2023-03-14
问题内容

查找整数数组中的第一个重复元素。
例如:

Input: array[] = {10, 7, 8, 1, 8, 7, 6}
Output: 7 [7 is the first element actually repeats]

问题答案:

简单的解决方案是使用两个循环。外循环将遍历循环,内循环将检查元素是否重复,但此解决方案的时间复杂度为 o(n^2)。

另一种解决方案是创建另一个数组并对其进行排序。从原始数组中选取元素并使用二进制搜索在排序数组中查找元素,但此解决方案的时间复杂度为 o(n^logn)。
我们能做得更好吗?
是的,我们可以从右到左迭代并使用HashSet来跟踪 minimumIndex

用 -1 初始化 minimumIndex * 从右到左迭代输入数组 * 如果元素已经存在于 Hashset 中,则更新 minimumIndex *否则将元素添加到集合中
一旦我们完成了迭代,我们最终会得到 minimumIndex
查找整数数组中第一个重复元素的程序

MaximumOccurringCharacterMain.java

package org.arpit.java2blog;
/* Java program to find first repeating element in arr[] */
import java.util.*; 

public class FirstRepatingElementMain 
{ 
    // This function prints the first repeating element in arr[] 
    static int getFirstRepeatingElementArray(int array[]) 
    { 
        // Initialize index of first repeating element 
        int minimumIndex = -1; 

        // Creates an empty hashset 
        HashSet<Integer> set = new HashSet<>(); 

        // Iterate over the input array from right to left 
        for (int i=array.length-1; i>=0; i--) 
        { 
            // If set contains the element, update minimum index 
            if (set.contains(array[i])) 
                minimumIndex = i; 

            else   // Else add element to hash set 
                set.add(array[i]); 
        } 
        return minimumIndex;
    } 

    public static void main (String[] args) throws java.lang.Exception 
    { 
        int array[] = {10, 7, 8, 1, 8, 7, 6}; 
        int min=getFirstRepeatingElementArray(array); 
        // Print the result 
        if (min != -1) 
            System.out.println("The first repeating element in array is " + array[min]); 
        else
            System.out.println("There are no repeating elements"); 
    } 
} 

当你运行上面的程序时,你会得到以下输出:

The first repeating element in array is 7


 类似资料:
  • 问题内容: 我被困在以下程序中: 我有一个输入整数数组,其中只有一个非重复数,例如{1,1,3,2,3}。输出应显示非重复元素,即2。 到目前为止,我执行了以下操作: 最好限制阵列中的解决方案。避免使用集合,地图。 问题答案: 由于几乎可以肯定这是一种学习练习,并且由于您非常接近正确完成它,因此需要进行以下更改才能使其正常工作: 将声明 __移到 外部循环 内部 -需要将标志设置为外部循环的每次迭

  • 在HashMap中,我可以使用containsKey(i)或containsValue(i)来检查我是否被使用;对数组也可以这样做吗?我的意思是检查myarray i1中的值是否为z i1==myarray中每个数组的第一个元素的组 在我的例子中{1,3,0,2}

  • 问题内容: 我有一个整数数组,我想计算重复出现的元素。首先,我读取数组的大小,并使用从控制台读取的数字对其进行初始化。在数组中,我存储了重复的元素。该数组存储元素连续出现的次数。然后,我尝试搜索重复序列并以特定格式打印它们。但是,它不起作用。 我希望输出看起来像这样: 例如: 如何找到重复的元素及其计数?如何如上所示打印它们? 问题答案: 字典(Java中的HashMap)可以轻松解决此类问题。

  • 问题内容: 假设我有一个整数的NumPy数组,如下所示: 我想找到数组的开始和结束索引,其中值的值大于重复的x倍(例如5倍)。因此,在上述情况下,其值为22和6。重复的22的开始索引为3,结束的索引为8。重复6相同。Python中是否有特殊的工具对您有所帮助?否则,我将遍历数组索引以获取索引,并将实际值与前一个进行比较。 问候。 问题答案: 使用@WarrenWeckesser在此处给出的和方法来

  • 问题内容: 如何在数组中查找重复元素?我有一组电话号码,因此在电话号码中,我应该从右侧到左侧开始搜索,并找到相似的6个整数。那我应该把它们打印出来。 问题答案: 要查找重复项,可以按电话号码建立交叉引用,然后将其过滤为仅重复项。例如,考虑: 在Swift 4中,您可以使用以下命令构建交叉引用字典: 要么 然后,找到重复项: 显然,请使用对您有意义的任何模型类型,但是上面的模型使用以下类型: 有很多