LC 1773. 统计匹配检索规则的物品数量

题目描述

这是 LeetCode 上的 1773. 统计匹配检索规则的物品数量 ,难度为 简单

给你一个数组 items ,其中 $items[i] = [type{i}, color{i}, name_{i}]$ ,描述第 i 件物品的类型、颜色以及名称。

另给你一条由两个字符串 ruleKeyruleValue 表示的检索规则。

如果第 i 件物品能满足下述条件之一,则认为该物品与给定的检索规则 匹配 :

  • ruleKey = "type" 且 $ruleValue = type_{i}$ 。
  • ruleKey = "color" 且 $ruleValue = color_{i}$。
  • ruleKey = "name" 且 $ruleValue = name{i}$。

统计并返回 匹配检索规则的物品数量 。

示例 1:

1
2
3
4
5
输入:items = [["phone","blue","pixel"],["computer","silver","lenovo"],["phone","gold","iphone"]], ruleKey = "color", ruleValue = "silver"

输出:1

解释:只有一件物品匹配检索规则,这件物品是 ["computer","silver","lenovo"] 。

示例 2:
1
2
3
4
5
输入:items = [["phone","blue","pixel"],["computer","silver","phone"],["phone","gold","iphone"]], ruleKey = "type", ruleValue = "phone"

输出:2

解释:只有两件物品匹配检索规则,这两件物品分别是 ["phone","blue","pixel"] 和 ["phone","gold","iphone"] 。注意,["computer","silver","phone"] 未匹配检索规则。

提示:

  • $1 <= items.length <= 10^4$
  • $1 <= type{i}.length, color{i}.length, name_{i}.length, ruleValue.length <= 10$
  • ruleKey 等于 "type""color""name"
  • 所有字符串仅由小写字母组成

模拟

根据题意进行模拟即可。

Java 代码:

1
2
3
4
5
6
7
8
9
class Solution {
public int countMatches(List<List<String>> items, String k, String v) {
int ans = 0, idx = k.charAt(0) == 't' ? 0 : k.charAt(0) == 'c' ? 1 : 2;
for (List<String> item : items) {
if (item.get(idx).equals(v)) ans++;
}
return ans;
}
}

TypeScript 代码:
1
2
3
4
5
6
7
function countMatches(items: string[][], k: string, v: string): number {
let ans = 0, idx = k[0] == 't' ? 0 : k[0] == 'c' ? 1 : 2
for (const item of items) {
if (item[idx] == v) ans++
}
return ans
}

Python 代码:
1
2
3
4
5
6
7
class Solution:
def countMatches(self, items: List[List[str]], k: str, v: str) -> int:
ans, idx = 0, 0 if k[0] == 't' else 1 if k[0] == 'c' else 2
for item in items:
if item[idx] == v:
ans += 1
return ans

  • 时间复杂度:$O(n)$
  • 空间复杂度:$O(1)$

最后

这是我们「刷穿 LeetCode」系列文章的第 No.1773 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。

在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:https://github.com/SharingSource/LogicStack-LeetCode

在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!