王道计算机考研机试指南二刷笔记-自用8
目录
写在开头
第3章 排序与查找
3.1 排序
总结
3.2 查找
总结
写在开头
一刷到后面断更了,发现每题都写太浪费时间了。
一刷总结:数学问题、贪心、递归分治、数据结构二基本都刷完了,图论只刷了并查集和最小生成树,动态规划只刷了0-1背包,搜索勉强能看懂,基本写不出。大致看了一下目标院校的机试真题,对我现在的水平来说还是有点难orz,机试4题可能勉强才能做出1道吧。0A肯定是过不了复试的,目标:保1争2,确保常规题做出来。
二刷计划:一眼就看出解法的不敲了,思路不清楚的重新敲一遍。把不记得的重点记下来。计划一天一章+总结。
第3章 排序与查找
3.1 排序
排序_牛客题霸_牛客网 (nowcoder.com)
成绩排序_牛客题霸_牛客网 (nowcoder.com)
成绩排序_牛客题霸_牛客网
特殊排序_牛客题霸_牛客网
整数奇偶排序_牛客题霸_牛客网
总结
1、把几个比较重要的排序算法(冒泡、快排、堆排序)基本思想再过一遍,面试可能会问;
2、题目不是考排序的话直接调用algorithm库中的sort函数排序,注意sort函数不稳定,要稳定排序就调用stable_sort函数;
3、包含的信息比较多时考虑用结构体;
4、二刷这五题基本都是一遍AC。
3.2 查找
找x_牛客题霸_牛客网 (nowcoder.com)
查找_牛客题霸_牛客网
找最小数_牛客题霸_牛客网
打印极值点下标_牛客题霸_牛客网
总结
1、查找最常用的一种思路:暴力查找,数据量不大的时候基本都能过;
2、数据量大时用二分查找能把时间复杂度降到logN,注意二分查找的循环条件,容易写错。
刷点经典题强化一下。
寻找峰值_牛客题霸_牛客网 (nowcoder.com)
1、直接暴力查找,修改之后测试用例只能通过15/22 。
2、二分查找法
(1)思路:题目将数组边界看成最小值,只需要找到其中一个波峰,因此只要不断地往高处走,一定会有波峰。每次找一个标杆元素,将数组分成两个区间,每次就较高的一边走,因此也可以用分治来解决,而标杆元素可以选择区间中点。
(2)具体做法
- step 1:二分查找首先从数组首尾开始,每次取中间值,直到首尾相遇。
- step 2:如果中间值的元素 > 它右边的元素,说明往右是向下,不一定会遇到波峰,往左收缩区间。
- step 3:如果中间值 < 右边的元素,说明往右是向上,向上一定能有波峰,往右收缩区间。
- step 4:最后区间首尾相遇的点一定就是波峰。
(3)源代码
class Solution {public:int findPeakElement(vector<int>& nums) {int left = 0, right = nums.size() - 1, mid;while (left < right) {mid = (left + right) / 2;// 二分中点右边是往上的趋势if (nums[mid] < nums[mid + 1]) // 这里我一开始写的是nums[mid] < nums[right],也能Aleft = mid + 1 ;elseright = mid;}// 循环结束left=rightreturn left;}
};
二分查找-I_牛客题霸_牛客网 (nowcoder.com)
第一次分支判断条件写错了,最重要的跳出target == nums[mid] 没写;第二次发现循环条件不完整,应该是low <= high,而不是 low < high 。(只有二分查找中是小于等于)改了之后全部AC了。
class Solution {
public:int search(vector<int>& nums, int target) {int low = 0,high = nums.size() - 1,mid;while(low <= high) { // 别漏了等于号mid = (low + high) / 2;if(target == nums[mid]) // 找到targetreturn mid;else if(target < nums[mid]) // target < nums[mid]high = mid - 1; // 在左半区间继续查找else low = mid + 1;}return -1; // 没找到返回-1}
};
二维数组中的查找_牛客题霸_牛客网 (nowcoder.com)
1、暴力解法:遍历一遍矩阵,可以AC。
2、二分搜索:从一行开始使用二分查找,一直到最后一行。(发现这种方法比暴力耗时高)
3、线性搜索(开眼界了):利用二维数组行列递增特性
- 由于行列递增,可以得出:
a.在一列中的某个数字,其上的数字都比它小
b.在一行中的某个数字,其右的数字都比它大 - 搜索流程:
a.首先从数组左下角搜索.
b.如果当前数字大于target,那么查找往上移一位,如果当前数字小于target,那么查找往右移一位。
c.查找到target,返回true; 如果越界,返回false;
class Solution {public:bool Find(int target, vector<vector<int> > array) {int row = array.size(); // 行数int col = array[0].size(); // 列数int i = row - 1, j = 0; // 从左下角开始while (i >= 0 && j < col) { if (target == array[i][j]) {return true;} else if (target > array[i][j]) { // target > array[i][j],向右走j++;} else {// target < array[i][j],向上走i--;}}return false;}
};
王道计算机考研机试指南二刷笔记-自用8相关推荐
- 王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...
二日期类问题 例2.3 日期差值 (九度教程第6题) 时间限制:1秒 **内存限制:32兆 ** 特殊判题:否 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数 ...
- 王道计算机考研机试指南刷题笔记-自用7
目录 例题4.4 统计字符(浙大复试上机题) 例题4.5 字母统计(上交复试上机题) 第5章 数据结构一 5.1 向量 例题5.1 完数与盈数(清华复试上机题) 5.2 队列 例题5.2 约瑟夫问题N ...
- 王道计算机考研机试指南刷题笔记-自用
| 写在开头 前两周磨磨唧唧把第二章暴力求解枚举部分的例题和习题都AC了,思路都不太难,找到规律很快就能写出来,想着一定要写刷题笔记,把coding时遇到的困难都记录下来,方便以后复习,却也一直未曾动 ...
- 王道计算机考研机试指南自用刷题笔记-自用6
目录 习题3.5 找最小数(北邮复试上机题) 习题3.6 打印极值点下标(北大复试上机题) 习题3.7 找位置(华科复试上机题) 第4章 字符串 4.1 字符串 4.2 字符串处理 4.1 特殊乘法( ...
- 王道计算机考研机试指南刷题笔记-自用3
| 2.2 模拟 3.其他模拟 例题2.9 KY25(清华大学复试上机题) 剩下的树__牛客网 (nowcoder.com) 1.总结 遇到的坑:直接把给出的区间右端点值减去左端点值+1得到这个区间移 ...
- 王道计算机考研机试指南自用刷题笔记-自用5
3.2 查找 例题3.4 找x(哈工大复试上机题) 找x_牛客题霸_牛客网 (nowcoder.com) 1.思路 简单题,定义一个数组存储输入的数字,定义一个flag标识是否找到x,对数组进行一次遍 ...
- 王道出版的机试指南_《王道论坛计算机考研机试指南》试读版.pdf
<王道论坛计算机考研机试指南>试读版 王道论坛 王道论坛计算机考研机试指南 王道论坛 2013.01.06 写在前面的话 各位王道的小崽子们,今天你们考完初试了,感觉解放了吧?轻松了吧?无 ...
- 计算机考研机试指南(八)——数学问题
机试指南 cha4 数学问题 % 1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> ...
- 王道出版的机试指南_王道论坛计算机考研机试指南 四 排版题
例2.7 输出梯形 (九度教程第14题) 时间限制:1秒 **内存限制:32兆 ** 特殊判题:否 题目描述: 输入一个高度h,输出一个高为h,上底边为h的梯形. 输入: 一个整数h(1<=h& ...
最新文章
- Oracle 10g 之自动收集统计信息
- 查看java内存_怎么查看java虚拟机存储空间使用情况
- ES什么时候会平衡分片
- mysql面试100题及答案_PHP面试100题汇总
- Python打包 pyinstaller
- mongodb 总结
- php防撞库,叉车防撞预警系统的必要性
- 【BZOJ2243】[SDOI2011]染色 树链剖分+线段树
- linux结构体大小端,【转】位结构体+大小端模式
- 代码整洁之道(二)优雅注释之道
- 思杰VDI外篇XDDC安装
- 远程桌面无法连接方案
- Thinkphp双轨直销系统源码
- 微信公众号扫码登录(一)—— 获取微信公众号二维码
- Android 调用 系统选择器 选择 图片 或 文件(ACTION_PICK、ACTION_GET_CONTENT)
- 全能修图工具:Pixelmator Pro for Mac
- 实现时间的计算: 要求用户输入身份证号,若格式有误,要求其重新输入。然后根据身份证号码输出20岁生日所在周的周三的日期
- 编程之美 - 中国象棋将帅问题
- 鲁宾逊与莱布尼兹(修改版)
- 冈萨雷斯《数字图像处理》学习笔记(六)彩色图像处理