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.

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%的用户

Last updated