gpt4 book ai didi

java - 将重复的数字移动到数组的末尾

转载 作者:行者123 更新时间:2023-12-02 07:10:05 27 4
gpt4 key购买 nike

我需要在Yahtzee中做一个计算smallStraight的方法(小直意味着你有4个骰子加一。例如,1,2,3,4,6是一个小直的)。现在我正在尝试克服当您对数组进行排序时可能存在重复数字的障碍。
例如,如果滚动然后排序,您可能会得到 1, 2, 2, 3, 4。现在我基本上需要删除数组末尾的第二个 2 。这是我的代码。请注意,这对于嵌套的四个循环显然不起作用。我只是想知道解决这个问题的最佳方法。

public int setSmallStraight(int[] die)
{
if (!isSmallStraightUsed)
{
int counter = 0;
boolean found = false;
Arrays.sort(die);

for (int i = 0; i < die.length - 1; i++)
{
if (counter == 3)
found = true;

if (die[i + 1] == die[i] + 1)
{
counter++;
}
else if (die[i + 1] == die[i])
{
continue;
}
else
{
counter = 0;
}
}

if (found)
{
smallStraight = 30;
}
else
{
smallStraight = 0;
}
return smallStraight;
}
else
return 0;
}

最佳答案

拥有一个 int 计数器来计算数组中连续 +1 增加的次数怎么样?类似这样的事情:

public boolean hasSmallStraight(int[] sortedValues) {
int counter = 0;
for (int i=0; i<sortedValues.length-1; i++) {
if (counter == 3) return true;

if (sortedValues[i+1] == sortedValues[i] + 1) {
counter++;
} else if (sortedValues[i+1] == sortedValues[i]) {
continue;
} else {
counter = 0;
}
}

return counter==3;
}

注意:这仅适用于小顺子

关于java - 将重复的数字移动到数组的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15627689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com