多次重复打印独特元素

Posted

技术标签:

【中文标题】多次重复打印独特元素【英文标题】:Printing unique elements repeated more than once 【发布时间】:2017-12-18 16:53:38 【问题描述】:

如何在 Java 的原始数组中打印一个由仅重复多次的元素组成的唯一数组?比如有一个数组a = 1,2,2,2,3,4,5,5,输出应该是2,5。它应该只使用数组。

我已经尝试过这个问题,这就是我到目前为止所做的:

for (int i = 0; i < a.length; i++) 
    int j;
    for (j = 0; j < i; j++) 
        if (a[i] == a[j]) break;
    
    if (i == j) System.out.print(a[i]+" ");

输出是数组中的所有唯一元素,但我正在尝试打印多次重复的元素。

【问题讨论】:

您认为自己先尝试自己做功课对您有帮助吗?然后发布您在其中遇到困难的代码以获得一些集中的帮助? for 循环是你的朋友... 到目前为止你做了什么??我们不是来做你的功课的 我投票结束这个问题作为离题,因为这个问题显示零努力 @GurzSingh 如果你想加入你的尝试,请edit你的问题。 【参考方案1】:

假设输入数组包含Comparable 或其他原始类型的元素,您可以按照以下步骤操作。目标本质上是找到length &gt; 1的所有链的最后一个元素。

    使用Arrays.sort 对数组进行排序(如有必要)。 迭代数组,从第二个元素开始。对于每个元素:
      如果前面的元素等于当前元素, 并且后续元素等于当前元素(或者如果没有后续元素)... 然后打印当前元素。

注意:如果您可以访问HashMap,则此 O(n log(n)) 算法会有一个 O(n) 版本。

代码如下:

public static void printDuplicates(int[] a) 
    Arrays.sort(a);
    for (int i = 1; i < a.length; i++) 
        boolean precIsEqual = (a[i-1] == a[i]);
        boolean succIsEqual = (i+1 != a.length) && (a[i+1] == a[i]);
        if (precIsEqual && !succIsEqual) 
            System.out.print(a[i] + " ");
        
    

Ideone Demo

输出:2 5

【讨论】:

以上是关于多次重复打印独特元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Console.WriteLine() 多次打印相同的字符 [重复]

想要在单行 Python 中多次打印 [重复]

基于数字使用 ngFor 多次重复 HTML 元素

基于数字使用 ngFor 多次重复 HTML 元素

在 JavaScript 中多次重复包含多个元素的数组

多次引用数组中的元素并将该元素分配给变量[重复]