难度: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.
Example 1:
Input: transactions = ["alice,20,800,mtv","alice,50,100,beijing"]
Output: ["alice,20,800,mtv","alice,50,100,beijing"]
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.
Example 2:
Input: transactions = ["alice,20,800,mtv","alice,50,1200,mtv"]
Output: ["alice,50,1200,mtv"]
Example 3:
Input: transactions = ["alice,20,800,mtv","bob,50,1200,mtv"]
Output: ["bob,50,1200,mtv"]
Constraints:
transactions.length <= 1000
Each transactions[i] takes the form "{name},{time},{amount},{city}"
Each {name} and {city} consist of lowercase English letters, and have lengths between 1 and 10.
Each {time} consist of digits, and represent an integer between 0 and 1000.
Each {amount} consist of digits, and represent an integer between 0 and 2000.
暴力,两次比较。
class Solution {
public:
vector<string> invalidTransactions(vector<string>& transactions) {
vector<bool> invalid(transactions.size(), false);
vector<vector<string>> trans;
for(auto t: transactions)
{
string tmp;
vector<string> tt;
for(auto c:t)
{
if(c ==',') {
tt.push_back(tmp);
tmp="";
}
else
tmp+=c;
}
tt.push_back(tmp);
trans.push_back(tt);
}
// cout<<trans[0][1]<<endl;
for(int i=0;i<trans.size();i++)
{
if(stoi(trans[i][2]) > 1000) invalid[i]=true;
for(int j=i+1;j<trans.size();j++)
{
if( (trans[i][0] == trans[j][0]) && abs(stoi(trans[i][1] ) - stoi(trans[j][1] )) <= 60 && (trans[i][3] != trans[j][3]) ) {
// cout<<stoi(trans[i][1])<<" "<< stoi(trans[i-1][1])<<endl;
invalid[i] = true;
invalid[j] = true;
}
}
}
vector<string> res;
for(int i=0;i<trans.size();i++)
{
if(invalid[i]) res.push_back(transactions[i]);
}
return res;
}
};
执行用时 :204 ms, 在所有 C++ 提交中击败了23.13%的用户
内存消耗 :18.2 MB, 在所有 C++ 提交中击败了100.00%的用户