今年
月底,教育部公布了
年全国硕士研究生报名人数,为
万。
自
年来首次出现下降。
考研人数下降,内在原因有很多。
但总的来说就是「考研所具备的收益,正逐步达到边际效应」,因此人数出现断崖式下降。
往年,不少同学会把考研当做退路之一。
通过考研,即可以提升学历,还可以延迟就业。
大家都在期望未来的就业环境会变好。
但经过这两年的"透心凉",大家发现本科毕业找不到工作,读研出来还是找不到。
而且以互联网为首的新兴科技科技行业,对年龄的要求,并不会因为学历而后延。
越来越多年轻人意识到,考研可能只是付费体验延后失业。
于是,考研的升学压力和就业压力快速达到平衡。
普通人很难再从中吃到红利。
过去几十年,高等教育在中国的普及,以及大学的逐年扩展,目的之一就是为了缓解就业压力。
在国内,相比于真正研究学术的博士学位,硕士这一学位的设定,更像是作为「高等教育毕业人数」与「新增就业岗位」的"缓冲池"。
新冠疫情的爆发,就业形势的严峻恶化,让池子一下子被打满。
于是,新冠疫情对人民生活就业的影响的逐步减弱,似乎成了一个合理解释考研人数下降的理由。
但事实是,即使抹掉新冠疫情对考研意向的影响,考研人数仍然下降。
从
开始,按照每年
% 的保守增速推算,
的考研报名人数也应该是
万。
现如今考研报名人数没有进入长期的横盘期,反而直接转向下降。
唯一的解释只能是:过去试图用考研来躲过至暗时刻的做法,现如今被证伪。现在是过去十年最差的时刻,没错,但是不是未来十年最好的时刻,没人知道。
但这还不能解释
万 到
万中近
万的缺口,从哪儿来。
很简单,因为原本决定考研的,现在他们也不考了。
就业市场没有变好,考研报名人数中少掉的那些人,必然流到了就业市场以外的地方。
宇宙尽头是编制,这句话显然也是从年轻人中流行开来。
但可惜的是,同一条路被选择的比例再低,乘上一个大基数,答案仍是供过于求。
况且,从统计数据来看,考公似乎也不是下一个蜜糖池子。
在平行宇宙的尽头,是去内卷化。
搞清楚内卷的根本:基础义务教育的巨大成功 + 高等教育走进日常 + 超级城市的虹吸效应。
相比打击教培、双减和有意降低高中升学率,用冗余的一线人才,填满非一线城市的缺口,才是提高社会生产力的正确道路。
这就要求地方 *****
......
对面充满不确定性的今天,相比于追求学历,注重综合素质提升更加重要。
普通人能做最好改变,就是「持续学习」。
聊完沉重话题,来做道考研算法题放松一下。
平台:LeetCode
题号:735
给定一个整数数组 asteroids
,表示在同一行的行星。
对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。
每一颗行星以相同的速度移动,找出碰撞后剩下的所有行星。
碰撞规则:
示例 1:
输入:asteroids = [5,10,-5]
输出:[5,10]
解释:10 和 -5 碰撞后只剩下 10 。5 和 10 永远不会发生碰撞。
示例 2:
输入:asteroids = [10,2,-5]
输出:[10]
解释:2 和 -5 发生碰撞后剩下 -5 。10 和 -5 发生碰撞后剩下 10 。
示例 3:
输入:asteroids = [8,-8]
输出:[]
解释:8 和 -8 碰撞后,两者都发生爆炸。
提示:
由于碰撞抵消总是从相邻行星之间发生,我们可以使用「栈」来模拟该过程。
从前往后处理所有的
,使用栈存储当前未被抵消的行星,当栈顶元素方向往右,当前
方向往左时,会发生抵消操作,抵消过程根据规则进行即可。
Java 代码:
class Solution {
public int[] asteroidCollision(int[] asteroids) {
Deque<Integer> d = new ArrayDeque<>();
for (int t : asteroids) {
boolean ok = true;
while (ok && !d.isEmpty() && d.peekLast() > 0 && t < 0) {
int a = d.peekLast(), b = -t;
if (a <= b) d.pollLast();
if (a >= b) ok = false;
}
if (ok) d.addLast(t);
}
int sz = d.size();
int[] ans = new int[sz];
while (!d.isEmpty()) ans[--sz] = d.pollLast();
return ans;
}
}
C++ 代码:
class Solution {
public:
vector<int> asteroidCollision(vector<int>& asteroids) {
deque<int> d;
for (int t : asteroids) {
bool ok = true;
while (ok && !d.empty() && d.back() > 0 && t < 0) {
int a = d.back(), b = -t;
if (a <= b) d.pop_back();
if (a >= b) ok = false;
}
if (ok) d.push_back(t);
}
vector<int> ans(d.begin(), d.end());
return ans;
}
};
Python 3 代码:
class Solution:
def asteroidCollision(self, asteroids: List[int]) -> List[int]:
stk = []
for t in asteroids:
ok = True
while ok and stk and stk[-1] > 0 and t < 0:
a, b = stk[-1], -t
if a <= b:
stk.pop(-1)
if a >= b:
ok = False
if ok:
stk.append(t)
return stk
TypeScript 代码:
function asteroidCollision(asteroids: number[]): number[] {
const stk = new Array<number>()
for (const t of asteroids) {
let ok = true
while (ok && stk.length > 0 && stk[stk.length - 1] > 0 && t < 0) {
const a = stk[stk.length - 1], b = -t
if (a <= b) stk.pop()
if (a >= b) ok = false
}
if (ok) stk.push(t)
}
return stk
};