大家好,我是吴师兄。
在职场生涯中,我们常常会遇到一个微妙而复杂的问题:工资的保密性。
我们很想窥探同事们的工资是多少,同时有忌讳同事知道自己的薪资,对于公司来说,也不想把每个人的工资待遇摆在明面上来。
首先,公开工资信息可能会引发不必要的比较和不满。例如,当你发现自己的努力与收入相比,与同事存在显著差异时,这种发现可能会破坏你的工作积极性。
此外,了解到同事的高收入,尽管他们的工作量可能比你少,这种情况会导致你感到失衡和不公平,这种心态不利于我们个人成长和职业发展。
同时,假设是一位刚步入职场的年轻人,在入职初期发现自己的薪资低于期望。这一发现使他感到沮丧,导致他对未来的职业发展失去了信心。工资保密在这里的作用是保护个人的自尊和积极性,避免因为早期的薪资差异而影响职业生涯的长远规划。
再比如是一个在公司工作多年的资深员工,意外得知新入职的年轻员工的起薪接近或甚至高于他的薪资。这种情况可能会引起他的不满和怨气,影响他对公司的忠诚度和工作。
所以工资保密还是有一定的好处的。
然后继续来学习 LeetCode 上面和工资有关的一道题目:去掉最低工资和最高工资后的工资平均值。
题目描述是这样子的。
给你一个整数数组
salary
,数组里每个数都是 唯一 的,其中salary[i]
是第i
个员工的工资。 请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。
这个问题的解决思路相对简单明了。有两种解法,第一种如下:
- 对工资数组进行排序。
- 去掉数组中的第一个元素(最低工资)和最后一个元素(最高工资)。
- 计算剩余元素的总和,并除以剩余元素的数量得到平均值。
public double average(int[] salary) {
Arrays.sort(salary);
double sum = 0;
for (int i = 1; i < salary.length - 1; i ) {
sum = salary[i];
}
return sum / (salary.length - 2);
}
第二种解法:
- 在一次遍历中找到最高和最低的工资。
- 同时计算总工资。
- 去掉最高和最低工资后,计算平均值。
public double average(int[] salary) {
int maxSalary = Integer.MIN_VALUE;
int minSalary = Integer.MAX_VALUE;
double sum = 0;
for (int s : salary) {
maxSalary = Math.max(maxSalary, s);
minSalary = Math.min(minSalary, s);
sum = s;
}
return (sum - maxSalary - minSalary) / (salary.length - 2);
}
我总结并录制了 100 道 LeetCode 高频算法题,涵盖了数组、链表、栈、队列、二叉树、回溯算法、动态规划等众多高频知识点,所选的题目也是非常有特征的题目,一题抵十题。