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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dfine.gitbook.io/leetcode/1169.invalid_transactions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
