【LeetCode】统计匹配检索规则的物品数量 Java 题解
题目描述
给你一个数组 items ,其中 items[i] = [typei, colori, namei] ,描述第 i 件物品的类型、颜色以及名称。
另给你一条由两个字符串 ruleKey 和 ruleValue 表示的检索规则。
如果第 i 件物品能满足下述条件之一,则认为该物品与给定的检索规则 匹配 :
ruleKey == "type" 且 ruleValue == typei 。ruleKey == "color" 且 ruleValue == colori 。ruleKey == "name" 且 ruleValue == namei 。统计并返回 匹配检索规则的物品数量 。
思路分析
今天的算法题目是列表类型题目。题目比较长,需要我们统计并返回 匹配检索规则的物品数量。首先分析题目,给出的 items[i] = [typei, colori, namei],是按照规定好的顺序排列的,我们可以使用一个 map,将每一个分类做对应,比如:type -> 0, color -> 1,name -> 2。完成这一步 map 计算之后,我们继续可以直接根据给出的 ruleKey 分类,找到对应的值。然后在将获取到的值与 ruleValue 做比较,找出符合题目要求的数量并统计。
具体实现代码如下,供参考。
通过代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
今天这个题目相对容易,主要考察的是 hashMap 的使用,hashMap 主要采用的是空间换时间的思想,来提升我们的计算效率。这个题目一个考察的小点是包装类比较使用 equals,比较的是对象的内容。
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【Albert】的原创文章。
原文链接:【http://xie.infoq.cn/article/f9908c220bca25e27ec697d9b】。文章转载请联系作者。
评论