当前位置: 首页 > 知识库问答 >
问题:

是否仅打印数组中的非重复元素?

卫博学
2023-03-14

这是我的代码片段

import java.util.*;
public class UniqueEl
{
    public static void main(String []p)
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter Array size");
        int size=sc.nextInt();
        //boolean ischeck=true;
        int flag=0,cnt=0;
        int []num=new int[size];
        System.out.println("Enter Array Elements");
        for(int i=0;i<size;i++)
        {
            num[i]=sc.nextInt();
        }
        System.out.println("Display Array Elements");
        for(int i=0;i<size;i++)
        {
            System.out.println("Array Elements are :-"+num[i]);
        }
        System.out.println("Unique elements from the array ");
        for(int i=0;i<size;i++)
        {   
            for(int j=0;j<size;j++)
            {
                if(i!=j)
                {
                    if(num[i]=num[j])
                    {
                        flag=1;
                    }
                    else
                    {
                        flag=0;
                        break;
                    }

                }
            }
            if(flag==1)
            {
                cnt++;
            System.out.println(num[i]+" ");

            }
        }
    }
}

在这个数组代码中,我必须打印非重复的整数值

说数组值是:-[1,1,2,3,1,2,4,5]答案应该是:-[3,4,5]即我必须打印的非重复整数值。有人能帮我解决这个问题吗

共有3个答案

朱自明
2023-03-14

也许这会有帮助:

static int[] uniqueElementsFrom(int[] arr) {
    final Map<Integer, Integer> numberOfOccurences = new HashMap<Integer, Integer>();

    for (int i : arr) {
        if (!numberOfOccurences.containsKey(i)) {
            numberOfOccurences.put(i, 1);
        } else {
            numberOfOccurences.put(i, numberOfOccurences.get(i) + 1);
        }
    }

    final Set<Integer> integers = numberOfOccurences.keySet();

    List<Integer> uniques = new LinkedList<Integer>();
    for (int i: integers) {
        if (numberOfOccurences.get(i) == 1) {
            uniques.add(i);
        }
    }

    final int[] uniqueIntsArray = new int[uniques.size()];
    for (int counter = 0; counter < uniques.size(); counter++) {
        uniqueIntsArray[counter] = uniques.get(counter);
    }
    return uniqueIntsArray;
}
颜杰
2023-03-14

更简单的方法可能是使用Java 8的流功能来计算每个元素的外观数量,然后过滤非唯一的外观:

List<Integer> uniqueElements =
    Arrays.stream(num)
          .boxed()
          .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
          .entrySet()
          .stream()
          .filter(e -> e.getValue() == 1)
          .map(Map.Entry::getKey)
          .collect(Collectors.toList());
隆璞
2023-03-14

使用EXOR操作。仅当重复计数为偶数且只有一个唯一编号时才有效。

public class MyClass {
    public static void main (String[] args) 
    { 

        int arr[] = { 1, 2, 5, 4, 6, 8, 9, 2, 1, 4, 5, 8, 9 }; 
        int n = arr.length; 
        int v = 0;
        for(int i = 0 ; i< n ; i++ ){
            v = v ^ arr[i]; //XOR Operation
        }

        System.out.print(v); 
    } 
}
 类似资料:
  • 先生,我正在尝试打印数组的第0个元素,但我不能。这是我的代码 当我试图打印时,它返回空值,但当我打印时,它返回第0个元素值。请你帮我找出我的错误好吗。

  • 问题内容: 我现在用来检查此功能的函数如下: 有用。我正在寻找的是是否有更好的方法来做到这一点。 问题答案: ECMAScript 2016 包含一种专门用于解决问题的数组方法,因此现在是首选方法。 _从2018年7月开始,如果您需要支持IE,则可以在polyfill中使用几乎所有 主流 浏览器。 编辑:请注意,如果数组中的项目是一个对象,则返回false。这是因为相似的对象是JavaScript

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

  • 我有一个函数,可以为传入的用户数组(使用 RSA 算法)生成密钥对,它似乎为每个用户正确生成密钥并将它们添加到数组列表中。但是,当我尝试打印输出时,它似乎只打印最后一个元素。似乎无法弄清楚我做错了什么。 下面是生成密钥并返回数组列表的函数:-它将用户的字符串数组作为参数。 这是我如何测试它:- 我收到的输出是

  • 有没有一种方法可以让你使用打印给定数组中的元素? 所以输出将是 或者 或

  • 我在中有一个带有几个元素的,我正在做的是迭代并显示Array中与null不同的所有元素。 这是: 我的问题:是否可以在一行中迭代null以外的元素?