全国硕士研究生招生考试已经接近尾声,今年总共有近3万名考生报考北京大学硕士研究生。而北大计划招生的研究生是7349人,按这个比例计算的话相当于4:1,也就是平均 4 个人当中会有一个人被录取,我感觉这比高考容易多了。
2023年北大在河南的招生人数是400人,而2023年河南高考的报名人数是131万人,这个比例相当于3000:1。当然肯定不能这样算,因为高考是把所有人都算上,而考研一般都是非常有实力的才会报北大。
看完了北大的报考人数,我们再来看下北大的学费。之前我一直以为北大和全国其他大学一样,学费一般都不会很贵,可是今天我在北京大学研究生招生网上看到有些学费动辄几万几十万的时候吓我一跳。
在认真一看才发现这些学费比较贵的基本上都是非全日制的,并且很多都是管理类的,我的理解是不是这些专业给钱都能上,但是想想80多万还是算了吧,现在大学生遍地都是,并且非全日制的很多地方也不认。
说到报考北大研究生的事,我们今天就来看一道北大考研的真题,这题是LeetCode的第75题:颜色分类。一网友在2020年北大考研的时候遇到过,所以如果想考北大,最好把这题熟练掌握,说不定下次又考了。除了北大以外我们看到小米,华为,快手,字节等大厂都考过。
问题描述
来源:LeetCode第75题
难度:中等
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
必须在不使用库内置的 sort 函数的情况下解决这个问题。
示例1:
输入:nums = [2,0,2,1,1,0]
输出:[0,0,1,1,2,2]
示例2:
输入:nums = [2,0,1]
输出:[0,1,2]
n == nums.length
1 <= n <= 300
nums[i] 为 0、1 或 2
问题分析
这题是让把数组中的 0 都挪到前面,2 都挪到后面,1 放到中间。我们可以使用三个指针,left指向前面需要交换的元素,right指向后面需要交换的元素,还一个index指向当前遍历的元素。
如果index指向的元素是 0 ,就和left指向的元素交换,交换完之后left要往后移一步。同理如果index指向的元素是 2 ,就和right指向的元素交换,交换完之后right要往前移一步。否则index指向的就是 1 ,不需要做任何交换。
JAVA:
public void sortColors(int[] nums) {int left = 0;// 0的右边界int right = nums.length - 1;// 2的左边界int index = 0;// 指向当前数字while (index <= right) {if (nums[index] == 0) {// 如果是0,就往前面移swap(nums, left++, index++);} else if (nums[index] == 1) {// 如果是1,不做任何交换index++;} else if (nums[index] == 2) {// 如果是2就往后面移swap(nums, right--, index);}}
}// 交换数组中的两个数字
private void swap(int[] nums, int i, int j) {int tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;
}
C++:
public:void sortColors(vector<int>& nums) {int left = 0;// 0的右边界int right = nums.size() - 1;// 2的左边界int index = 0;// 指向当前数字while (index <= right) {if (nums[index] == 0) {// 如果是0,就往前面移swap(nums[left++], nums[index++]);} else if (nums[index] == 1) {// 如果是1,不做任何交换index++;} else if (nums[index] == 2) {// 如果是2就往后面移swap(nums[right--], nums[index]);}}}
-------------------------end-------------------------
笔者简介
博哥,真名:王一博,毕业十多年,《算法秘籍》作者,专注于数据结构和算法的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解700多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以下载我整理的1000多页的PDF算法文档。
耗时两年终于出版了!
最近两个月,我公众号阅读从一千多增长到三四万,这样写才会出现爆款,才能被官方推荐。