ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Leetcode 1169. 查询无效交易(如果数据量不大,这种题还是得暴力枚举解决)

2022-06-26 11:35:34  阅读:207  来源: 互联网

标签:sub 数据量 transactions 1169 alice start str Leetcode string


在这里插入图片描述
如果出现下述两种情况,交易 可能无效:

  • 交易金额超过 $1000
  • 或者,它和 另一个城市 中 同名 的另一笔交易相隔不超过 60 分钟(包含 60 分钟整)

给定字符串数组交易清单 transaction 。每个交易字符串 transactions[i] 由一些用逗号分隔的值组成,这些值分别表示交易的名称,时间(以分钟计),金额以及城市。

返回 transactions,返回可能无效的交易列表。你可以按 任何顺序 返回答案。

示例 1:

输入:transactions = ["alice,20,800,mtv","alice,50,100,beijing"]
输出:["alice,20,800,mtv","alice,50,100,beijing"]
解释:第一笔交易是无效的,因为第二笔交易和它间隔不超过 60 分钟、名称相同且发生在不同的城市。同样,第二笔交易也是无效的。

示例 2:

输入:transactions = ["alice,20,800,mtv","alice,50,1200,mtv"]
输出:["alice,50,1200,mtv"]

示例 3:

输入:transactions = ["alice,20,800,mtv","bob,50,1200,mtv"]
输出:["bob,50,1200,mtv"]
 

提示:

  • transactions.length <= 1000
  • 每笔交易 transactions[i] 按 "{name},{time},{amount},{city}" 的格式进行记录
  • 每个交易名称 {name} 和城市 {city} 都由小写英文字母组成,长度在 1 到 10 之间
  • 每个交易时间 {time} 由一些数字组成,表示一个 0 到 1000 之间的整数
  • 每笔交易金额 {amount} 由一些数字组成,表示一个 0 到 2000 之间的整数

主要思路:

  1. 先字符串分割
  2. 然后根据要求直接暴力枚举

Code:

class Solution {
public:
    void str_split(const std::string & src, const std::string & sep, std::vector<string> & vec_str)
    {
        std::string::size_type start = 0;
        int i=0;
        for(std::string::size_type end = src.find(sep, start); end != std::string::npos; end = src.find(sep, start))
        {
            if(end > start)
            {
                
                string str=src.substr(start, end - start);
                vec_str.push_back(str);
            }
            start = end + sep.length();
        }
        if(start < src.length())
        {
            
            string str=src.substr(start, src.length() - start);
            vec_str.push_back(str);
            
        }
    }
    vector<string> invalidTransactions(vector<string>& transactions) {
        vector<string>res;
        vector<vector<string>>vec;
        for(int i=0;i<transactions.size();i++)
        {
            vector<string>temp;
            str_split(transactions[i],",",temp);
            vec.push_back(temp);
        }
        
        map<string,int>mymap;
        for(int i=0;i<vec.size();i++)
        {
            vector<string>sub=vec[i];
            if(atoi(sub[2].c_str())>1000)
            {
                string str=sub[0]+","+sub[1]+","+sub[2]+","+sub[3];
                //  res.push_back(str);
                mymap.insert(pair<string,int>(str,0));
            }
            else
            {
                for(int j=0;j<vec.size();j++)
                {
                    if(j==i)
                        continue;
                    vector<string>sub2=vec[j];
                    if(sub2[3]!=sub[3])
                    {
                        if(sub2[0]==sub[0])
                        {
                            if(abs(atoi(sub[1].c_str())-atoi(sub2[1].c_str()))<=60)
                            {
                                string str=sub2[0]+","+sub2[1]+","+sub2[2]+","+sub2[3];
                                
                                string str2=sub[0]+","+sub[1]+","+sub[2]+","+sub[3];
                                mymap.insert(pair<string,int>(str,0));
                                mymap.insert(pair<string,int>(str2,0));
                                
                            }
                        }
                    }
                }
            }
        }
        
        map<string,int>::iterator it;
        
        for(it=mymap.begin();it!=mymap.end();++it)
        {
            int cnt=count(transactions.begin(),transactions.end(),it->first);
            for(int j=0;j<cnt;j++)
                res.push_back(it->first);
        }
        return res;
        
    }
};

标签:sub,数据量,transactions,1169,alice,start,str,Leetcode,string
来源: https://www.cnblogs.com/xiaohai123/p/16413159.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有