总结数组中的所有匹配元素

时间:2017-12-07 06:19:00

标签: java arrays

如何总结数组中的所有匹配元素?我目前正在尝试使用嵌套for循环,但如果一个数字出现超过2次,它将无法正确总结。我觉得这里缺少一些小东西。

public class Game {
ColoredDice dice[] = new ColoredDice[6];
private int diceValues[] = new int[6];

public Game() {
    rollSixDice();  
    score();
}

public void rollSixDice(){
    for(int i = 0;i < 6;i++){
        dice[i] = new ColoredDice();
    }
    // getDiceValue returns the int value of the die
    for(int i =0;i<dice.length;i++){
        diceValues[i] = dice[i].getDiceValue();
    }
}

public void score(){
    for(int i=0;i<dice.length;i++){
        for(int j = i+1 ;j < 6;j++){
            if(dice[i].getDiceValue() == diceValues[j]){
                score += dice[i].getDiceValue();
            }
        }
    }
    System.out.println(score);
  } 
}


public class DiceTester {
public static void main(String[] args) {
new Game();
  }
}

要清楚了解发生了什么...... 这里的两个数组都是相同的,并且类型为int。 示例角色值:2,3,4,2,6,6。 评分:8

2 个答案:

答案 0 :(得分:0)

你能试试吗,

for(int i=0;i < dice.length;i++){
        for(int j =i+1;j < dice.length;j++){
            if(dice[i].getDiceValue() == dice[j].getDiceValue()){
                score += dice[i].getDiceValue();
            }
        }
    }

答案 1 :(得分:0)

您可以使用哈希映射,其中键是您要组的组,值是sum。这会将空间复杂度增加到O(N)和时间复杂度O(N)。 或者你可以通过先排序然后连续求和相同的元素来做O(nlogn)