LeetCode 184. 部门工资最高的员工
题目描述
思路分析
解法一:分组统计(推荐)
核心思路:
- 按部门统计最高工资。
- 再遍历员工列表,筛出工资等于部门最高值的员工。
复杂度分析:
- 时间复杂度:O(n),其中 n 表示员工数量。
- 空间复杂度:O(n),用于哈希表。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Solution {
public List<int[]> departmentHighestSalary(int[][] employees) {
Map<Integer, Integer> maxSalary = new HashMap<>();
for (int[] e : employees) {
int dept = e[2];
maxSalary.put(dept, Math.max(maxSalary.getOrDefault(dept, 0), e[1]));
}
List<int[]> res = new ArrayList<>();
for (int[] e : employees) {
int dept = e[2];
if (e[1] == maxSalary.get(dept)) {
res.add(e);
}
}
return res;
}
}
func departmentHighestSalary(employees [][]int) [][]int {
maxSalary := make(map[int]int)
for _, e := range employees {
dept := e[2]
if e[1] > maxSalary[dept] {
maxSalary[dept] = e[1]
}
}
res := make([][]int, 0)
for _, e := range employees {
dept := e[2]
if e[1] == maxSalary[dept] {
res = append(res, e)
}
}
return res
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 184. 部门工资最高的员工 | 中等 | 分组统计 |
| 185. 部门工资前三高的所有员工 | 困难 | 分组排序 |
| 177. 第N高的薪水 | 中等 | 排序 |
| 178. 分数排名 | 中等 | 排序 |
| 176. 第二高的薪水 | 中等 | 分组统计 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!