Skip to content

Commit 880d488

Browse files
committed
feat: update solutions to lc problem: No.1817
No.1817.Finding the Users Active Minutes
1 parent deb9ca3 commit 880d488

File tree

12 files changed

+65
-46
lines changed

12 files changed

+65
-46
lines changed

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

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ ID=2 的用户执行操作的分钟分别是:2 和 3 。因此,该用户的
5858

5959
**方法一:哈希表**
6060

61+
我们用哈希表 $d$ 记录每个用户的所有去重操作时间,然后遍历哈希表,统计每个用户的用户活跃分钟数,最后统计每个用户活跃分钟数的分布情况。
62+
63+
时间复杂度 $O(n)$,空间复杂度 $O(n)$。其中 $n$ 为数组 `logs` 的长度。
64+
6165
<!-- tabs:start -->
6266

6367
### **Python3**
@@ -68,8 +72,8 @@ ID=2 的用户执行操作的分钟分别是:2 和 3 。因此,该用户的
6872
class Solution:
6973
def findingUsersActiveMinutes(self, logs: List[List[int]], k: int) -> List[int]:
7074
d = defaultdict(set)
71-
for u, t in logs:
72-
d[u].add(t)
75+
for i, t in logs:
76+
d[i].add(t)
7377
ans = [0] * k
7478
for ts in d.values():
7579
ans[len(ts) - 1] += 1
@@ -84,12 +88,12 @@ class Solution:
8488
class Solution {
8589
public int[] findingUsersActiveMinutes(int[][] logs, int k) {
8690
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);
91+
for (var log : logs) {
92+
int i = log[0], t = log[1];
93+
d.computeIfAbsent(i, key -> new HashSet<>()).add(t);
9094
}
9195
int[] ans = new int[k];
92-
for (Set<Integer> ts : d.values()) {
96+
for (var ts : d.values()) {
9397
++ans[ts.size() - 1];
9498
}
9599
return ans;
@@ -104,9 +108,14 @@ class Solution {
104108
public:
105109
vector<int> findingUsersActiveMinutes(vector<vector<int>>& logs, int k) {
106110
unordered_map<int, unordered_set<int>> d;
107-
for (auto& e : logs) d[e[0]].insert(e[1]);
111+
for (auto& log : logs) {
112+
int i = log[0], t = log[1];
113+
d[i].insert(t);
114+
}
108115
vector<int> ans(k);
109-
for (auto& e : d) ++ans[e.second.size() - 1];
116+
for (auto& [_, ts] : d) {
117+
++ans[ts.size() - 1];
118+
}
110119
return ans;
111120
}
112121
};
@@ -117,12 +126,12 @@ public:
117126
```go
118127
func findingUsersActiveMinutes(logs [][]int, k int) []int {
119128
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)
129+
for _, log := range logs {
130+
i, t := log[0], log[1]
131+
if _, ok := d[i]; !ok {
132+
d[i] = make(map[int]bool)
124133
}
125-
d[u][t] = true
134+
d[i][t] = true
126135
}
127136
ans := make([]int, k)
128137
for _, ts := range d {

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

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ Hence, answer[1] = 1, answer[2] = 1, and the remaining values are 0.
5858
class Solution:
5959
def findingUsersActiveMinutes(self, logs: List[List[int]], k: int) -> List[int]:
6060
d = defaultdict(set)
61-
for u, t in logs:
62-
d[u].add(t)
61+
for i, t in logs:
62+
d[i].add(t)
6363
ans = [0] * k
6464
for ts in d.values():
6565
ans[len(ts) - 1] += 1
@@ -72,12 +72,12 @@ class Solution:
7272
class Solution {
7373
public int[] findingUsersActiveMinutes(int[][] logs, int k) {
7474
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);
75+
for (var log : logs) {
76+
int i = log[0], t = log[1];
77+
d.computeIfAbsent(i, key -> new HashSet<>()).add(t);
7878
}
7979
int[] ans = new int[k];
80-
for (Set<Integer> ts : d.values()) {
80+
for (var ts : d.values()) {
8181
++ans[ts.size() - 1];
8282
}
8383
return ans;
@@ -92,9 +92,14 @@ class Solution {
9292
public:
9393
vector<int> findingUsersActiveMinutes(vector<vector<int>>& logs, int k) {
9494
unordered_map<int, unordered_set<int>> d;
95-
for (auto& e : logs) d[e[0]].insert(e[1]);
95+
for (auto& log : logs) {
96+
int i = log[0], t = log[1];
97+
d[i].insert(t);
98+
}
9699
vector<int> ans(k);
97-
for (auto& e : d) ++ans[e.second.size() - 1];
100+
for (auto& [_, ts] : d) {
101+
++ans[ts.size() - 1];
102+
}
98103
return ans;
99104
}
100105
};
@@ -105,12 +110,12 @@ public:
105110
```go
106111
func findingUsersActiveMinutes(logs [][]int, k int) []int {
107112
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)
113+
for _, log := range logs {
114+
i, t := log[0], log[1]
115+
if _, ok := d[i]; !ok {
116+
d[i] = make(map[int]bool)
112117
}
113-
d[u][t] = true
118+
d[i][t] = true
114119
}
115120
ans := make([]int, k)
116121
for _, ts := range d {

solution/1800-1899/1817.Finding the Users Active Minutes/Solution.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@ class Solution {
22
public:
33
vector<int> findingUsersActiveMinutes(vector<vector<int>>& logs, int k) {
44
unordered_map<int, unordered_set<int>> d;
5-
for (auto& e : logs) d[e[0]].insert(e[1]);
5+
for (auto& log : logs) {
6+
int i = log[0], t = log[1];
7+
d[i].insert(t);
8+
}
69
vector<int> ans(k);
7-
for (auto& e : d) ++ans[e.second.size() - 1];
10+
for (auto& [_, ts] : d) {
11+
++ans[ts.size() - 1];
12+
}
813
return ans;
914
}
1015
};

solution/1800-1899/1817.Finding the Users Active Minutes/Solution.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
func findingUsersActiveMinutes(logs [][]int, k int) []int {
22
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)
3+
for _, log := range logs {
4+
i, t := log[0], log[1]
5+
if _, ok := d[i]; !ok {
6+
d[i] = make(map[int]bool)
77
}
8-
d[u][t] = true
8+
d[i][t] = true
99
}
1010
ans := make([]int, k)
1111
for _, ts := range d {

solution/1800-1899/1817.Finding the Users Active Minutes/Solution.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
class Solution {
22
public int[] findingUsersActiveMinutes(int[][] logs, int k) {
33
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);
4+
for (var log : logs) {
5+
int i = log[0], t = log[1];
6+
d.computeIfAbsent(i, key -> new HashSet<>()).add(t);
77
}
88
int[] ans = new int[k];
9-
for (Set<Integer> ts : d.values()) {
9+
for (var ts : d.values()) {
1010
++ans[ts.size() - 1];
1111
}
1212
return ans;

solution/1800-1899/1817.Finding the Users Active Minutes/Solution.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
class Solution:
22
def findingUsersActiveMinutes(self, logs: List[List[int]], k: int) -> List[int]:
33
d = defaultdict(set)
4-
for u, t in logs:
5-
d[u].add(t)
4+
for i, t in logs:
5+
d[i].add(t)
66
ans = [0] * k
77
for ts in d.values():
88
ans[len(ts) - 1] += 1

solution/1800-1899/1818.Minimum Absolute Sum Difference/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class Solution:
8989
nums = sorted(nums1)
9090
s = sum(abs(a - b) for a, b in zip(nums1, nums2)) % mod
9191
mx = 0
92-
for i, (a, b) in enumerate(zip(nums1, nums2)):
92+
for a, b in zip(nums1, nums2):
9393
d1, d2 = abs(a - b), inf
9494
i = bisect_left(nums, b)
9595
if i < len(nums):

solution/1800-1899/1818.Minimum Absolute Sum Difference/README_EN.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class Solution:
7474
nums = sorted(nums1)
7575
s = sum(abs(a - b) for a, b in zip(nums1, nums2)) % mod
7676
mx = 0
77-
for i, (a, b) in enumerate(zip(nums1, nums2)):
77+
for a, b in zip(nums1, nums2):
7878
d1, d2 = abs(a - b), inf
7979
i = bisect_left(nums, b)
8080
if i < len(nums):
@@ -218,7 +218,7 @@ func abs(x int) int {
218218
* @param {number[]} nums2
219219
* @return {number}
220220
*/
221-
var minAbsoluteSumDiff = function(nums1, nums2) {
221+
var minAbsoluteSumDiff = function (nums1, nums2) {
222222
const mod = 10 ** 9 + 7;
223223
const nums = [...nums1];
224224
nums.sort((a, b) => a - b);

solution/1800-1899/1818.Minimum Absolute Sum Difference/Solution.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ def minAbsoluteSumDiff(self, nums1: List[int], nums2: List[int]) -> int:
44
nums = sorted(nums1)
55
s = sum(abs(a - b) for a, b in zip(nums1, nums2)) % mod
66
mx = 0
7-
for i, (a, b) in enumerate(zip(nums1, nums2)):
7+
for a, b in zip(nums1, nums2):
88
d1, d2 = abs(a - b), inf
99
i = bisect_left(nums, b)
1010
if i < len(nums):

solution/1800-1899/1880.Check if Word Equals Summation of Two Words/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ function isSumEqual(
173173
};
174174
return calc(firstWord) + calc(secondWord) === calc(targetWord);
175175
}
176-
177176
```
178177

179178
### **Rust**

0 commit comments

Comments
 (0)