LeetCode 1169. 查询无效交易
题目链接:https://leetcode-cn.com/problems/invalid-transactions/
如果出现下述两种情况,交易 可能无效:
交易金额超过 ¥1000
或者,它和另一个城市中同名的另一笔交易相隔不超过 60 分钟(包含 60 分钟整)
每个交易字符串 transactions[i] 由一些用逗号分隔的值组成,这些值分别表示交易的名称,时间(以分钟计),金额以及城市。
给你一份交易清单 transactions,返回可能无效的交易列表。你可以按任何顺序返回答案。
提示:
transactions.length <= 1000
每笔交易 transactions[i] 按 "{name},{time},{amount},{city}" 的格式进行记录
每个交易名称 {name} 和城市 {city} 都由小写英文字母组成,长度在 1 到 10 之间
每个交易时间 {time} 由一些数字组成,表示一个 0 到 1000 之间的整数
每笔交易金额 {amount} 由一些数字组成,表示一个 0 到 2000 之间的整数
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invalid-transactions
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
用一个内部类来描述一个交易的信息,将所有交易记录加入到数组中,遍历数组判断记录是否有效,时间复杂度:O(n^2)
private class Trade {
private String s;
private String name;
private int time;
private int money;
private String city;
private boolean valid;
public Trade(String s, String name, int time, int money, String city) {
super();
this.s = s;
this.name = name;
this.time = time;
this.money = money;
this.city = city;
this.valid = this.money > 1000 ? false : true;
}
@Override
public String toString() {
return s;
}
private boolean invalid(Trade o) {
return this.name.equals(o.name) && !this.city.equals(o.city)
&& Math.abs(this.time - o.time) <= 60;
}
}
public List<String> invalidTransactions(String[] transactions) {
List<String> result = new ArrayList<String>();
List<Trade> trades = new ArrayList<Trade>();
// 1.使用Pattern和Matcher(比split慢)
// Pattern p = Pattern.compile("([a-z]{1,10}),(\\d{1,4}),(\\d{1,4}),([a-z]{1,10})");
for (String s : transactions) {
// Matcher m = p.matcher(s);
// if (m.find()) {
// Trade t = new Trade(s, m.group(1), Integer.valueOf(m.group(2)),
// Integer.valueOf(m.group(3)), m.group(4));
// trades.add(t);
// }
// valueOf会调用parseInt得到int值封装成Integer对象,而parseInt则是返回int值
// 2.使用String的split方法
String[] split = s.split(",");
Trade t = new Trade(s, split[0], Integer.parseInt(split[1]), Integer.parseInt(split[2]),
split[3]);
trades.add(t);
}
for (int i = 0; i < trades.size(); i++) {
Trade iTrade = trades.get(i);
if (!iTrade.valid) {
continue;
}
for (int j = 0; j < trades.size(); j++) {
if (i == j) {
continue;
}
Trade jTrade = trades.get(j);
if (iTrade.invalid(jTrade)) {
// 外部类能访问内部类的私有属性
iTrade.valid = false;
jTrade.valid = false;
}
}
}
for (Trade t : trades) {
if (!t.valid) {
result.add(t.toString());
}
}
return result;
}
通过这题,我尝试了使用Pattern和Matcher,知道了valueOf和parseInt的区别,发现外部类可以访问内部类的私有属性,以前从来没研究过。
LeetCode 1169. 查询无效交易的更多相关文章
- 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法
spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...
- LeetCode.1108-使IP地址无效(Defanging an IP Address)
这是小川的第393次更新,第426篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第257题(顺位题号是1108).给定有效(IPv4)IP地址,返回该IP地址的无效版本. ...
- K:leetcode 5381.查询带键的排列 这题简单,但我还能优化。精益求精,才是算法的乐趣所在!
前言: 本题来自leetcode第184场周赛的第二小题.以前参加过周赛,觉得很有趣.苦于最近一段时间比较忙就没坚持参加了(实际上是借口来着....),由于昨晚思考一些事情,导致睡不着,所以起得有点早 ...
- ArcGIS Js/Flex等前端API(Query(StatisticDefinition)时)针对SDE的SHAPE.AREA/SHAPE.LEN知道查询无效,而对GDB的SHAPE_Area/SHAPE_Length有效探索。
FIeld 'SHAPE.AREA' and 'SHAPE.LEN' of SDE For Oracle,Field 'SHAPE_Area' and 'SHAPE_Length' of gdb(ge ...
- MySQL查询含转义字符反斜杠的时候一直为零查询无效
今天在查询一个字段时显示一直显示为0,可是表里明明有对应的数值. ) as vote_your_count from vote_beauty where beauty_person = '\u5c0f ...
- Leetcode 301.删除无效的括号
删除无效的括号 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果. 说明: 输入可能包含了除 ( 和 ) 以外的字符. 示例 1: 输入: "()())()" 输出 ...
- layui table 表格查询无效问题
[热身话题] 在开发的过程中,大量数据的展示大多采用表格的方式,直观,清晰.在这里,我也使用过一些框架Bootstrap.table ,Dev table ,layui table.本次采用的layu ...
- Java实现 LeetCode 301 删除无效的括号
301. 删除无效的括号 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果. 说明: 输入可能包含了除 ( 和 ) 以外的字符. 示例 1: 输入: "()())()&quo ...
- [LeetCode]301. 删除无效的括号(DFS)
题目 题解 step1. 遍历一遍,维护left.right计数器,分别记录不合法的左括号.右括号数量. 判断不合法的方法? left维护未匹配左括号数量(增,减)(当left为0遇到右括号,则交由r ...
随机推荐
- js-获取屏幕的中各种宽高
网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...
- powerdesigner16.6版本resource的重复使用
今天早上遇到想要重复使用resource ,但是发现powerdesigner16.6版本跟16.5版本有关重复使用name的设置已经不一样了,网上找了好久没找到,软件上找了好久也没找到相应的设置. ...
- 服务器小白的我,是如何将 node+mongodb 项目部署在服务器上并进行性能优化的
前言 本文讲解的是:做为前端开发人员,对服务器的了解还是小白的我,是如何一步步将 node+mongodb 项目部署在阿里云 centos 7.3 的服务器上,并进行性能优化,达到页面 1 秒内看到 ...
- 你不知道的JavaScript之作用域
什么是作用域 编译原理 分词/词法分析 这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代 码块被称为词法单元(token) 解析/语法分析 这个过程是将词法单元流(数组)转 ...
- MySQL之Xtrabackup的使用
一.Xtrabackup介绍 XtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Pe ...
- python 生成式,生成器,迭代器,可迭代
1.生成器就是迭代器2.生成式用[](中括号)包起来,生成器用()(圆括号)包起来3.生成式在使用前已经在内存中存在,生成器只有在使用时才生成4.迭代器是可以用.__next__()不断取出下一值,直 ...
- 初识云计算 -《AWS云端企业实战圣经》读书笔记
原书中涉及实操的地方,在本文中被省略.一是篇幅太长,放入文中太过累赘,二是原书成书过早,现在 AWS 的界面早已变化很大,不具备参考性. 第一章 谁在使用云计算 1.什么是云计算 云计算(cloud ...
- 第二篇 特征点匹配以及openvslam中的相关实现详解
配置文件 在进入正题之前先做一些铺垫,在openvslam中,配置文件是必须要正确的以.yaml格式提供,通常需要指明使用的相机模型,ORB特征检测参数,跟踪参数等. #==============# ...
- Commons组件实现文件上传与下载
一.文件上传 所需jar包 首先是commons-fileupload.jar包 其次是commons-IO.jar包 前者的使用依赖后者,两者缺一不可 实现 前台要求 在前台提交的form表单请求方 ...
- This probably means that Tcl wasn't installed properly.
报错 D:/Anaconda3/tcl/tcl8.6/init.tcl: version conflict for package "Tcl": have 8.6.8, need ...