从两个元素中的整数数组中找到两对

Om *_*war 3 java algorithm

两对:如果有两对具有相同数字的骰子,则玩家得分这些骰子的总和.如果不是,则玩家得分为0.例如,放在"两对"上的1,1,2,3,3给出8.

例子:1,1,2,3,3结果8 1,1,2,3,4结果0 1,1,2,2,2结果6

如何有效地找到这个?

我一直在使用以下代码来查找一对

int max_difference = 0;
int val1 = 0 , val2 = 0;
Arrays.sort(dice);
for (int i = 0; i < dice.length - 1; i++) {
    int x = dice[i+1] - dice[i];
    if(x <= max_difference) {
        max_difference = x;
        val1 = dice[i];
        val2 = dice[i+1];

    }
}
pairScore = val1 + val2;
Run Code Online (Sandbox Code Playgroud)

Mar*_*ark 5

没有必要让它变得那么复杂,因为你只是在搜索结果数...

int prev = 0;
int result = 0;
int pairs = 0;

Arrays.sort(dice);
for (int i = 0; i < dice.length; i++) 
{
    int current = dice[i];
    if (current == prev) 
    {
        result += current*2;
        pairs++;
        prev = 0;
    } 
    else prev = current;
}

if (pairs == 2) return result;
else return 0;
Run Code Online (Sandbox Code Playgroud)