Skip to content

Commit 7ef8a07

Browse files
committed
feat: add solutions to lc problem: No.1817
No.1817.Finding the Users Active Minutes
1 parent 269636d commit 7ef8a07

File tree

6 files changed

+164
-2
lines changed

6 files changed

+164
-2
lines changed

solution/1800-1899/1817.Finding the Users Active Minutes/README.md

+59-1
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,80 @@ ID=2 的用户执行操作的分钟分别是:2 和 3 。因此,该用户的
5656

5757
<!-- 这里可写通用的实现逻辑 -->
5858

59+
**方法一:哈希表**
60+
5961
<!-- tabs:start -->
6062

6163
### **Python3**
6264

6365
<!-- 这里可写当前语言的特殊实现逻辑 -->
6466

6567
```python
66-
68+
class Solution:
69+
def findingUsersActiveMinutes(self, logs: List[List[int]], k: int) -> List[int]:
70+
d = defaultdict(set)
71+
for u, t in logs:
72+
d[u].add(t)
73+
ans = [0] * k
74+
for ts in d.values():
75+
ans[len(ts) - 1] += 1
76+
return ans
6777
```
6878

6979
### **Java**
7080

7181
<!-- 这里可写当前语言的特殊实现逻辑 -->
7282

7383
```java
84+
class Solution {
85+
public int[] findingUsersActiveMinutes(int[][] logs, int k) {
86+
Map<Integer, Set<Integer>> d = new HashMap<>();
87+
for (int[] log : logs) {
88+
int u = log[0], t = log[1];
89+
d.computeIfAbsent(u, key -> new HashSet<>()).add(t);
90+
}
91+
int[] ans = new int[k];
92+
for (Set<Integer> ts : d.values()) {
93+
++ans[ts.size() - 1];
94+
}
95+
return ans;
96+
}
97+
}
98+
```
99+
100+
### **C++**
101+
102+
```cpp
103+
class Solution {
104+
public:
105+
vector<int> findingUsersActiveMinutes(vector<vector<int>>& logs, int k) {
106+
unordered_map<int, unordered_set<int>> d;
107+
for (auto& e : logs) d[e[0]].insert(e[1]);
108+
vector<int> ans(k);
109+
for (auto& e : d) ++ans[e.second.size() - 1];
110+
return ans;
111+
}
112+
};
113+
```
74114
115+
### **Go**
116+
117+
```go
118+
func findingUsersActiveMinutes(logs [][]int, k int) []int {
119+
d := map[int]map[int]bool{}
120+
for _, e := range logs {
121+
u, t := e[0], e[1]
122+
if _, ok := d[u]; !ok {
123+
d[u] = make(map[int]bool)
124+
}
125+
d[u][t] = true
126+
}
127+
ans := make([]int, k)
128+
for _, ts := range d {
129+
ans[len(ts)-1]++
130+
}
131+
return ans
132+
}
75133
```
76134

77135
### **...**

solution/1800-1899/1817.Finding the Users Active Minutes/README_EN.md

+57-1
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,69 @@ Hence, answer[1] = 1, answer[2] = 1, and the remaining values are 0.
5555
### **Python3**
5656

5757
```python
58-
58+
class Solution:
59+
def findingUsersActiveMinutes(self, logs: List[List[int]], k: int) -> List[int]:
60+
d = defaultdict(set)
61+
for u, t in logs:
62+
d[u].add(t)
63+
ans = [0] * k
64+
for ts in d.values():
65+
ans[len(ts) - 1] += 1
66+
return ans
5967
```
6068

6169
### **Java**
6270

6371
```java
72+
class Solution {
73+
public int[] findingUsersActiveMinutes(int[][] logs, int k) {
74+
Map<Integer, Set<Integer>> d = new HashMap<>();
75+
for (int[] log : logs) {
76+
int u = log[0], t = log[1];
77+
d.computeIfAbsent(u, key -> new HashSet<>()).add(t);
78+
}
79+
int[] ans = new int[k];
80+
for (Set<Integer> ts : d.values()) {
81+
++ans[ts.size() - 1];
82+
}
83+
return ans;
84+
}
85+
}
86+
```
87+
88+
### **C++**
89+
90+
```cpp
91+
class Solution {
92+
public:
93+
vector<int> findingUsersActiveMinutes(vector<vector<int>>& logs, int k) {
94+
unordered_map<int, unordered_set<int>> d;
95+
for (auto& e : logs) d[e[0]].insert(e[1]);
96+
vector<int> ans(k);
97+
for (auto& e : d) ++ans[e.second.size() - 1];
98+
return ans;
99+
}
100+
};
101+
```
64102
103+
### **Go**
104+
105+
```go
106+
func findingUsersActiveMinutes(logs [][]int, k int) []int {
107+
d := map[int]map[int]bool{}
108+
for _, e := range logs {
109+
u, t := e[0], e[1]
110+
if _, ok := d[u]; !ok {
111+
d[u] = make(map[int]bool)
112+
}
113+
d[u][t] = true
114+
}
115+
ans := make([]int, k)
116+
for _, ts := range d {
117+
ans[len(ts)-1]++
118+
}
119+
return ans
120+
}
65121
```
66122

67123
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution {
2+
public:
3+
vector<int> findingUsersActiveMinutes(vector<vector<int>>& logs, int k) {
4+
unordered_map<int, unordered_set<int>> d;
5+
for (auto& e : logs) d[e[0]].insert(e[1]);
6+
vector<int> ans(k);
7+
for (auto& e : d) ++ans[e.second.size() - 1];
8+
return ans;
9+
}
10+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
func findingUsersActiveMinutes(logs [][]int, k int) []int {
2+
d := map[int]map[int]bool{}
3+
for _, e := range logs {
4+
u, t := e[0], e[1]
5+
if _, ok := d[u]; !ok {
6+
d[u] = make(map[int]bool)
7+
}
8+
d[u][t] = true
9+
}
10+
ans := make([]int, k)
11+
for _, ts := range d {
12+
ans[len(ts)-1]++
13+
}
14+
return ans
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public int[] findingUsersActiveMinutes(int[][] logs, int k) {
3+
Map<Integer, Set<Integer>> d = new HashMap<>();
4+
for (int[] log : logs) {
5+
int u = log[0], t = log[1];
6+
d.computeIfAbsent(u, key -> new HashSet<>()).add(t);
7+
}
8+
int[] ans = new int[k];
9+
for (Set<Integer> ts : d.values()) {
10+
++ans[ts.size() - 1];
11+
}
12+
return ans;
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def findingUsersActiveMinutes(self, logs: List[List[int]], k: int) -> List[int]:
3+
d = defaultdict(set)
4+
for u, t in logs:
5+
d[u].add(t)
6+
ans = [0] * k
7+
for ts in d.values():
8+
ans[len(ts) - 1] += 1
9+
return ans

0 commit comments

Comments
 (0)