Invalid Transactions LeetCode solution in Java

1
class Solution {
2
public List<String> invalidTransactions(String[] transactions) {
3
Map<String, List<Transaction>> nameToTransaction = new HashMap<>();
4
for (int i = 0; i < transactions.length; i++) {
5
Transaction t = new Transaction(transactions[i], i);
6
nameToTransaction.putIfAbsent(t.name, new ArrayList<>());
7
nameToTransaction.get(t.name).add(t);
8
}
9
List<String> invalid = new ArrayList<>();
10
for (List<Transaction> list : nameToTransaction.values()) {
11
for (Transaction t : list) {
12
if (t.isInvalidAmount()) invalid.add(transactions[t.id]);
13
else {
14
for (Transaction otherT : list) {
15
if (t.isInvalidCity(otherT)) {
16
invalid.add(transactions[t.id]);
17
break;
18
}
19
}
20
}
21
}
22
}
23
return invalid;
24
}
25
}
26

27
class Transaction {
28
String name, city;
29
int time, amount, id;
30

31
Transaction(String s, int id) {
32
this.id = id;
33
String[] split = s.split(",");
34
name = split[0];
35
time = Integer.parseInt(split[1]);
36
amount = Integer.parseInt(split[2]);
37
city = split[3];
38
}
39

40
boolean isInvalidAmount() {
41
return this.amount > 1000;
42
}
43

44
boolean isInvalidCity(Transaction t) {
45
return !city.equals(t.city) && Math.abs(t.time - time) <= 60;
46
}
47
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0