invalid Badge Records
Given a list of people who enter and exit, find the people who entered without their badge and who exited without their badge.
// badge_records = [
// ["Martha", "exit"],
// ["Paul", "enter"],
// ["Martha", "enter"],
// ["Martha", "exit"],
// ["Jennifer", "enter"],
// ["Paul", "enter"],
// ["Curtis", "enter"],
// ["Paul", "exit"],
// ["Martha", "enter"],
// ["Martha", "exit"],
// ["Jennifer", "exit"],
// ]
// Expected output: ["Paul", "Curtis"], ["Martha"]https://leetcode.com/discuss/interview-question/982488/bettercom-phone-interview-badge-access
// 0 for exited, 1 for entered public static List<List<String>> analyzeRecords(final String[][] badgeRecords) {
// 0 for exited, 1 for entered
Map<String, Integer> map = new HashMap<>();
final Set<String> invalidEnteriesSets = new HashSet<>();
final Set<String> invalidExitsSets = new HashSet<>();
for (String[] record : badgeRecords) {
String name = record[0];
String action = record[1];
if (action.equals("exit")) {
if (!map.containsKey(name) || map.get(name) != 1) {
invalidEnteriesSets.add(name);
} else {
map.put(name, 0);
}
}
if (action == "enter") {
if (!map.containsKey(name) || map.get(name) == 0) {
map.put(name, 1);
} else if (map.get(name) == 1) {
invalidExitsSets.add(name);
}
}
}
for (String name: map.keySet()) {
if (map.get(name) > 0) {
invalidExitsSets.add(name);
}
}
List<List<String>> result = new ArrayList<>();
List<String> invalidEnteriesList = new ArrayList<>(invalidEnteriesSets);
List<String> invalidExits = new ArrayList<>(invalidExitsSets);
result.add(invalidExits);
result.add(invalidEnteriesList);
return result;
}Last updated