1169.Invalid Transactions
1169.Invalid Transactions
难度:Easy
A transaction is possibly invalid if:
the amount exceeds $1000, or; if it occurs within (and including) 60 minutes of another transaction with the same name in a different city. Each transaction string transactions[i] consists of comma separated values representing the name, time (in minutes), amount, and city of the transaction.
Given a list of transactions, return a list of transactions that are possibly invalid. You may return the answer in any order.
1
Example 1:
2
3
Input: transactions = ["alice,20,800,mtv","alice,50,100,beijing"]
4
Output: ["alice,20,800,mtv","alice,50,100,beijing"]
5
Explanation: The first transaction is invalid because the second transaction occurs within a difference of 60 minutes, have the same name and is in a different city. Similarly the second one is invalid too.
6
Example 2:
7
8
Input: transactions = ["alice,20,800,mtv","alice,50,1200,mtv"]
9
Output: ["alice,50,1200,mtv"]
10
Example 3:
11
12
Input: transactions = ["alice,20,800,mtv","bob,50,1200,mtv"]
13
Output: ["bob,50,1200,mtv"]
14
15
16
Constraints:
17
18
transactions.length <= 1000
19
Each transactions[i] takes the form "{name},{time},{amount},{city}"
20
Each {name} and {city} consist of lowercase English letters, and have lengths between 1 and 10.
21
Each {time} consist of digits, and represent an integer between 0 and 1000.
22
Each {amount} consist of digits, and represent an integer between 0 and 2000.
Copied!
暴力,两次比较。
1
class Solution {
2
public:
3
vector<string> invalidTransactions(vector<string>& transactions) {
4
vector<bool> invalid(transactions.size(), false);
5
vector<vector<string>> trans;
6
for(auto t: transactions)
7
{
8
string tmp;
9
vector<string> tt;
10
for(auto c:t)
11
{
12
if(c ==',') {
13
tt.push_back(tmp);
14
tmp="";
15
}
16
else
17
tmp+=c;
18
}
19
tt.push_back(tmp);
20
trans.push_back(tt);
21
}
22
// cout<<trans[0][1]<<endl;
23
24
for(int i=0;i<trans.size();i++)
25
{
26
if(stoi(trans[i][2]) > 1000) invalid[i]=true;
27
for(int j=i+1;j<trans.size();j++)
28
{
29
if( (trans[i][0] == trans[j][0]) && abs(stoi(trans[i][1] ) - stoi(trans[j][1] )) <= 60 && (trans[i][3] != trans[j][3]) ) {
30
// cout<<stoi(trans[i][1])<<" "<< stoi(trans[i-1][1])<<endl;
31
invalid[i] = true;
32
invalid[j] = true;
33
34
}
35
}
36
}
37
38
vector<string> res;
39
for(int i=0;i<trans.size();i++)
40
{
41
if(invalid[i]) res.push_back(transactions[i]);
42
}
43
return res;
44
}
45
};
Copied!
执行用时 :204 ms, 在所有 C++ 提交中击败了23.13%的用户 内存消耗 :18.2 MB, 在所有 C++ 提交中击败了100.00%的用户
Copy link