【问题标题】:Finding Unique Elements in a Matrix在矩阵中查找唯一元素
【发布时间】:2011-04-20 02:07:28
【问题描述】:

我正在使用一个称为矩阵的二维数组。我需要检索数组中的唯一元素。

无 A B C G F
y1 a1 b2 c1 g1 f1
y2 a1 b1 c2 g2 f1
y3 a2 b1 c2 g1 f2
y4 a1 b2 c2 g2 f1
y5 a2 b2 c1 g1 f2

例如,对于 A 列,我应该得到 a1 和 a2。对于 B,b1 和 b2,依此类推。

我尝试了不同的方法,但到目前为止没有任何效果。这是我整理的:

   public void UniqueElement(String line){

       List tempList = Arrays.asList(line);

       Set set = new HashSet(tempList);
       System.out.println("");
       System.out.printf("%s", set);

   }//UniqueElement Method

这是我得到的:

[无,A,B,C,G,F] [y1,a1,b2,c1,g1,f1] [y2,a1,b1,c2,g2,f1] [y3,a2,b1,c2,g1,f2] [y4,a1,b2,c2,g2,f1]

有人可以建议另一种方法来尝试在我的矩阵中挑选出独特的项目吗?

谢谢

【问题讨论】:

    标签: java hashset


    【解决方案1】:

    您可以执行嵌套的foreach 循环并遍历数组中的元素。随着您的进行,将“新”或未见过的元素存储在列表中。要确定您是否看过一个元素,请每次遍历列表,如果找到匹配项,请移至下一个数组元素。否则(不匹配),将元素添加到列表中并移动到下一个数组元素。

    此算法非常暴力且无法很好地扩展,但它会为您提供独特元素的列表。

    【讨论】:

      【解决方案2】:

      如果您可以节省内存...循环每个项目并将其用作 Map 的键,每次遇到键时递增值。完成后,遍历 Map 并输出值为 1 的键。

      事实上,由于您只关心唯一性,您可以使用布尔值作为值。 true = 唯一,false = 不唯一

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-18
        相关资源
        最近更新 更多