0

我正在尝试创建一个 java 方法,该方法将查看 2d 数组并查看多次输入数字的次数,然后输出计数。

所以给定这个数组

1   2   3   3   
5   6   7   8   
8   45  9   45  
10  17  18  13

该方法将返回一个计数3

到目前为止,这就是我所拥有的

int dupe=0;
    int chk1=0, chk2=0;

    for (int row =0; row < dataTable.length; row ++)
    {//for 1

        for ( int col = 0; col < dataTable[row].length; col++)
        {//for 2





            if (dataTable[row][col] ==  dataTable [chk1][chk2])
            {//if

             dupe++;
            }//end if 

        chk1++;
        chk2++;



    }//end for 2 

}//end for 1
    dupe=dupe-1;
return dupe;

但是它不会运行,除非我在第二个 4 中声明 chk1 和 chk2,每次运行检查时都会重新声明它们。

4

4 回答 4

4

如何实现:

  1. 创建一个地图来存储看到的数字。
  2. 循环遍历二维数组中的每一行。
  3. 循环遍历二维数组中的每一列
  4. 如果之前没有见过数字(不在地图中),则插入值为 1 的地图
  5. 如果之前(在地图中)看到过数字,则在地图入口处增加值
  6. 循环遍历map中的值,并且计数> 1;这个值就是你的答案
于 2012-04-18T00:52:16.747 回答
1

策略:遍历整个数组,并将每个元素与所有其他元素进行比较。将结果收集到一个变量中。由于我认为这是作业,我不能给你代码,但策略应该足以让你开始。

于 2012-04-18T00:52:23.540 回答
0

两种解释:

/**
 * The number of entries that are double of others.
 * When 4 threes occure, 3 threes are counted.
 */
public static int moreThanOnce(int[][] matrix) {
    Set<Integer> uniqueNumbers = new HashSet<Integer>();
    int n = 0;
    for (int row = 0; row < matrix.length; ++i) {
        n += matrix[i].length;
        Collections.addAll(uniqueNumbers, matrix[i]);
    }
    return n - uniqueNumbers.size();
}

/**
 * The number of different numbers appearing more than once.
 * When four appears 3 times and eight 4 times, then the result is 2.
 */
public static int moreThanOnce2(int[][] matrix) {
    Set<Integer> usedNumbers = new HashSet<Integer>();
    Set<Integer> doubleNumbers = new HashSet<Integer>();
    for (int[] row : matrix) {
        for (int x : row) {
            if (!usedNumbers.add(x)) { // Not added, already used
                doubleNumbers.add(x);
            }
        }
    }
    return doubleNumbers.size();
}
于 2012-04-18T01:17:04.113 回答
0

好吧,您可以通过查看每一行来遍历数组...

for(int i = 0; i < rows; i++) {
    for(int j = 0; j < columns; j++) {
        // check
    }
}

然后通过将其与所有其他数字进行比较来检查一个数字是否重复,您可以将其存储在其他地方。

于 2012-04-18T00:56:09.263 回答