5 回答

TA貢獻(xiàn)1831條經(jīng)驗 獲得超10個贊
嘗試使用一套。一個元素只能包含在集合中一次,因此如果數(shù)組中有重復(fù)的數(shù)字,contains()則會返回。true
public static void findPairs(int[] numbers) {
Set<Integer> set = new HashSet<>();
for (int number: numbers) {
if (!set.add(number)) {
System.out.println("PAIR: " + number);
}
}
}
請記住,如果您的數(shù)組包含超過 2 個相同數(shù)字的重復(fù)項,則這將打印PAIR: n多次 - 它不會在列表中找到給定數(shù)字的多個重復(fù)項。
在這種情況下,您可能需要考慮刪除該號碼并跟蹤您已經(jīng)捕獲的對。

TA貢獻(xiàn)1789條經(jīng)驗 獲得超8個贊

TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
您可以使用一個數(shù)組,其中位置+1是卡片的編號,例如:
5 5 10 11 7
[0, 0, 0, 0, 2, ... , 1, 0, 0, 1, 1,...]

TA貢獻(xiàn)1858條經(jīng)驗 獲得超8個贊
用戶輸入是如何存儲的。例如,將其存儲為數(shù)組,然后將按要求輸出以下內(nèi)容。
public static void main(String[] args) {
int[] nums = new int[]{12,11,5,2,12};
System.out.println(isPair(nums));
}
private static String isPair(int[] nums){
Set<Integer> set = new HashSet<>();
for(int n : nums){
if(set.contains(n)){
return "PAIR";
}else{
set.add(n);
}
}
return null;
}

TA貢獻(xiàn)1824條經(jīng)驗 獲得超5個贊
正如其他答案所指出的,使用 Set 可以很容易地找到重復(fù)項,但無法區(qū)分一對、三條和四邊形之間的區(qū)別,或者兩對和葫蘆之間的區(qū)別。它也無助于找到剩下的撲克牌。
更好的方法是簡單地對用于表示卡片的數(shù)字?jǐn)?shù)組進(jìn)行排序,然后迭代排序的列表,查找對和三元組(現(xiàn)在將是相鄰的)。這也將幫助您尋找順子,并有助于在相似牌之間進(jìn)行排名。
另外,通常最好從上到下尋找手牌:即,檢查同花順,然后四邊形,然后葫蘆,然后同花......一直到一對和沒有對。
添加回答
舉報