Найти 2 разных пары в броске из 5 разных костей - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть массив из 5 кубиков, и я пытаюсь проверить его на наличие двух разных пар. Допустим, у меня есть (1,1,2,2,3) или (3,3,4,4,5), я хочу, чтобы он вернул true. Как я мог сделать это?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Все просто. Предположим, у вас есть массив, arr [5] = {1,1,2,2,3};Вы можете использовать Set для решения этой проблемы. Я отслеживаю пару с помощью переменной count.

1,1,2,2,3 -> Я перебираю массив один за другим. Когда я получаю 1 в первый раз, я ставлю в сет. Во второй раз проверьте в наборе, если оно есть, то это должна быть пара.

public bool findSet(int[] arr)
{ 
   HashSet<Integer> set = new HashSet<>();
   int count = 0; 
   for(int n : arr)
   {
      if(set.contains(n))
      count++;
      else
      set.add(n);
   }
   return count == 2;
 }
0 голосов
/ 01 ноября 2019

Пусть первый кубик будет, int [] firstDice = new int [] {1,1,2,2,3};

Пусть второй кубик будет, int [] secondDice = new int [] {3,3,4,4,5};

Чтобы проверить, отличается ли каждая пара, просто выполните итерацию по обоим одновременно (при условии, что количество кубиков одинаково). Вот пример метода:

 private boolean checkDifferentDice(int [] firstDice, int [] secondDice){
 boolean result = true;
 for (int i = 0; i < firstDice.length; i++)
 {
     if (firstDice[i] == secondDice[i])
      return false;
  }
    return result;
  }
...