Skip to content

1169. Invalid Transactions

Difficulty Topics

Description

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.

You are given an array of strings transaction where transactions[i] consists of comma-separated values representing the name, time (in minutes), amount, and city of the transaction.

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.

Solution

invalid-transactions.py
class Solution:
    def invalidTransactions(self, transactions: List[str]) -> List[str]:
        ans = []
        length = len(transactions)
        if not length: return ans
        name,time,money,city = [],[],[],[]
        add = [1] * length

        for trans in transactions:
            tran = trans.split(',')
            name.append(tran[0])
            time.append(int(tran[1]))
            money.append(int(tran[2]))
            city.append(tran[3])

        for i in range(length):
            if money[i] > 1000:
                add[i] = False
            for j in range(i+1,length):
                if name[i] == name[j] and abs(time[i]-time[j])<= 60 and city[i]!=city[j]:
                    add[i] = False
                    add[j] = False

        for ind,val in enumerate(add):
            if not val:
                ans.append(transactions[ind])

        return ans