[leetcode] 1169. Invalid Transactions

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.

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:

  1. transactions.length <= 1000.
  2. Each transactions[i] takes the form “{name},{time},{amount},{city}”
  3. Each {name} and {city} consist of lowercase English letters, and have lengths between 1 and 10.
  4. Each {time} consist of digits, and represent an integer between 0 and 1000.
  5. Each {amount} consist of digits, and represent an integer between 0 and 2000.

分析

题目的意思是:给定一个字符串数组,要求找出满足上述两个条件的字符串。我一开始暴力破解了一下,发现当前的字符串不止跟前一个字符串有关,还可能与其他字符串有关,所以我当时只把前一个字符串考虑进来,所以有点问题。后面参考了别人的实现,也算是暴力破解出来了,代码是我自己写的,只参考了一下思路,保持了一下原创哈哈哈

代码

class Solution:
    def invalidTransactions(self, transactions: List[str]) -> List[str]:
        res=[]
        for i,t1 in enumerate(transactions):
            item=t1.split(',')
            val=int(item[2])
            minute=int(item[1])
            name=item[0]
            city=item[-1]
            if(val>1000):
                res.append(t1)
                continue
            for j,t2 in enumerate(transactions):
                if(i!=j):
                    item=t2.split(',')
                    val2=int(item[2])
                    minute2=int(item[1])
                    name2=item[0]
                    city2=item[-1]
                    if(abs(minute2-minute)<=60 and name2==name and city2!=city):
                        res.append(t1)
                        break
           
        return res

参考文献

[LeetCode] Simple clean python - only 10 lines

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值