LeetCode 184. 部门工资最高的员工

题目描述

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. 第二高的薪水 中等 分组统计
本文作者:
本文链接: https://hgnulb.github.io/blog/2024/90074598
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!