Доброго времени суток. Почему не проходит тест очевидно:
Ожидаемый ответ: 2, 5, 7.
Реальный: 2, 5, 6, 7.
НО! Почему там не должно быть (6) при глубине поиска 2?
0 - друг 4 (deep=0);
5 - друг 0 и потенциальный друг для 4 (deep=1);
6 - друг 5 и потенциальный друг для 0 (deep=2).
Видимо, я чего-то не понимаю в условии задачи. Объясните, пожалуйста.package com.javarush.task.task36.task3611;
import java.util.Set;
import java.util.TreeSet;
/*
Сколько у человека потенциальных друзей?
*/
public class Solution {
private boolean[][] humanRelationships;
public static void main(String[] args) {
Solution solution = new Solution();
solution.humanRelationships = generateRelationships();
Set<Integer> allFriendsAndPotentialFriends = solution.getAllFriendsAndPotentialFriends(4, 2);
System.out.println(allFriendsAndPotentialFriends); // Expected: [0, 1, 2, 3, 5, 7]
Set<Integer> potentialFriends = solution.removeFriendsFromSet(allFriendsAndPotentialFriends, 4);
System.out.println(potentialFriends); // Expected: [2, 5, 7]
}
public Set<Integer> getAllFriendsAndPotentialFriends(int index, int deep) {
//напишите тут ваш код
Set<Integer> set = new TreeSet<>();
//fill friendslist
for (int i = 0; i < humanRelationships.length; i++) {
if (i < index && index < humanRelationships.length && humanRelationships[index][i]) set.add(i);
else if (i > index && humanRelationships[i][index]) set.add(i);
}
//fill potentialFriendsList
if (deep==0) return set;
Set<Integer> potentialFriends = new TreeSet<>();
for (Integer integer : set) {
for (Integer potenrialFriend : getAllFriendsAndPotentialFriends(integer, deep-1)) {
potentialFriends.add(potenrialFriend);
}
}
for (Integer potentialFriend : potentialFriends) {
set.add(potentialFriend);
}
set.remove(index);
return set;
}
// Remove from the set the people with whom you already have a relationship
public Set<Integer> removeFriendsFromSet(Set<Integer> set, int index) {
for (int i = 0; i < humanRelationships.length; i++) {
if ((i < index) && (index < humanRelationships.length) && humanRelationships[index][i]) {
set.remove(i);
} else if ((i > index) && humanRelationships[i][index]) {
set.remove(i);
}
}
return set;
}
// Return test data
private static boolean[][] generateRelationships() {
return new boolean[][]{
{true}, //0
{true, true}, //1
{false, true, true}, //2
{false, false, false, true}, //3
{true, true, false, true, true}, //4
{true, false, true, false, false, true}, //5
{false, false, false, false, false, true, true}, //6
{false, false, false, true, false, false, false, true} //7
};
}
}