大家好,我是苍何。
又一次看到京东高调宣布加薪的消息,距离京东上次加薪仅仅过去 2 个多月。
这次京东科技宣布「技术研发岗」将给出平均 20 个月的薪酬。
配合其最近开奖,开出 offer 的同学表示「高到离谱」,薪资太逆天了。
讲真的,从现象来看,就像是王婆卖瓜,不过是自卖他夸,说到加薪这事,我们梳理下京东今年的大动作。
1,2021 年 7 月 1 日开始,京东用两年时间将员工平均年薪由原来的 14 薪逐步涨至 16 薪,直接加 2 个月年终。
2,2024 年 1 月 1 日起,京东采销年固定薪酬大幅上调 100%;
3,2024 年初,超 2 万名京东一线客服员工,平均薪酬上涨超过 30%;
4,2024 年 8 月,京东 2025 校招启动,开放 18000 个岗位,校招生薪酬再次上调平均 20%。
5,2024 年 9 月 13 日,京东再次宣布零售和其他部门,两年时间,再由 16 薪逐步加到 20 薪。
6、2024 年 11 月 11 日,京东科技宣布「技术研发岗」将给出平均 20 个月的薪酬。
你看这波操作下来,无非是想证明,大京东福利给力,我给的起,说明我业绩好我愿意给,这波舆论下来,风评是不是立马拉上来了。
至于实际加没加,那就不得而知了。毕竟不是 base 薪资,最后能不能发,还不知道了,如果是高级大饼,那我只想说,这饼,吃吃就得了。
现在,我个人觉得吧,真正想为员工谋福利,那就干脆高调宣布,我司不允许加班,下班后和工作相关的事一律不许做。
那才真是值得打工人歌颂,至少我没看到有哪家公司有这个胆量。
目前啊,大家选择 offer,要么就图个 WLB,要么就图个基本工资高,那些说的天花乱坠的福利,到头来还不及钱来的实在。
你是否认同呢?欢迎评论区讨论。
...
回归主题。
今天来一道京东开发考过的面试算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:215
题目描述:数组中的第 K 个最大元素
给定整数数组 nums
和整数 k
,请返回数组中第 k
个最大的元素。
请注意,你需要找的是数组排序后的第 k
个最大的元素,而不是第 k
个不同的元素。
你必须设计并实现时间复杂度为 O (n) 的算法来解决此问题。
示例 1
输入:
nums = [3,2,1,5,6,4], k = 2
输出:
5
示例 2
输入:
nums = [3,2,3,1,2,4,5,5,6], k = 4
输出:
4
提示
(1 \leq k \leq \text{nums. length} \leq 10^5)
(-10^4 \leq \text{nums}[i] \leq 10^4)
解题思路
快速选择法:利用快速选择(Quickselect)算法,这是快速排序的一种变体,能够在期望时间 (O (n)) 内找到第
k
大的元素。通过递归划分数组区域,直到找到目标位置。最小堆:使用大小为
k
的最小堆存储当前最大的k
个元素。当堆中元素超过k
个时,移除堆顶最小值。最终,堆顶元素即为第k
大元素。时间复杂度为 (O (n \log k)),适合较大k
值的情况。
在这里,我们使用最小堆来实现解法。
代码实现
Java 代码:
import java.util.PriorityQueue;
public class Solution {
public int findKthLargest(int[] nums, int k) {
// 创建一个大小为 k 的最小堆
PriorityQueue<Integer> minHeap = new PriorityQueue<>(k);
// 遍历数组,将每个元素加入最小堆
for (int num : nums) {
minHeap.offer(num);
// 如果堆中的元素数量超过 k,移除堆顶元素
if (minHeap.size() > k) {
minHeap.poll();
}
}
// 最小堆的堆顶元素即为第 k 大的元素
return minHeap.peek();
}
}
C++代码:
#include <vector>
#include <queue>
class Solution {
public:
int findKthLargest(std::vector<int>& nums, int k) {
// 创建一个大小为 k 的最小堆
std::priority_queue<int, std::vector<int>, std::greater<int>> minHeap;
// 遍历数组,将每个元素加入最小堆
for (int num : nums) {
minHeap.push(num);
// 如果堆中的元素数量超过 k,移除堆顶元素
if (minHeap.size() > k) {
minHeap.pop();
}
}
// 最小堆的堆顶元素即为第 k 大的元素
return minHeap.top();
}
};
Python 代码:
import heapq
class Solution:
def findKthLargest(self, nums, k):
# 创建大小为 k 的最小堆
min_heap = []
# 遍历数组,将每个元素加入最小堆
for num in nums:
heapq.heappush(min_heap, num)
# 如果堆中的元素数量超过 k,移除堆顶元素
if len(min_heap) > k:
heapq.heappop(min_heap)
# 最小堆的堆顶元素即为第 k 大的元素
return min_heap[0]
复杂度分析
时间复杂度:(O (n \log k)),其中 (n) 是数组的长度。每次插入和移除堆顶元素的时间复杂度为 (O (\log k))。
空间复杂度:(O (k)),用于存储最小堆中的元素。
ending
你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪
点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。
感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在公众号页面发送相关暗号关键词获取抽奖,每一篇文章会给到一个不同的暗号,对应的抽奖都是独立的,此篇暗号为【20】,在后台回复【20】,即可点击进去参与抽奖!抽奖内容、金额、个数等都无变化,在开奖前参与抽奖,操作均有效。
注意,后台(不是评论区,是后台)回复【20】即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
就像大家之前回复【八股】一样。