自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 计算机操作系统学习总结

计算机操作系统学习笔记(整体内容总结)整体思维导图进程多进程概念的引出线程切换与调度内存管理设备驱动文件系统整体思维导图计算机操作系统是计算机硬件上的第一层软件,其为应用程序员提供一个资源集的清晰抽象,并管理这些硬件资源。计算机操作系统这门课的主体概念有:进程/线程管理、内存管理、I/O设备管理、文件系统进程多进程概念的引出进程一个接一个顺序执行,会导致CPU利用率低(因为CPU长时间在I/O等待)。如果CPU执行到一个I/O指令时,切换到其他程序上继续工作,这样在等待I/O指令的这段时间里C

2021-06-25 12:52:06 376

原创 剑指offer题目汇总——栈和队列

剑指offer题目汇总——栈和队列方法题目剑指 Offer 06. 从尾到头打印链表题目描述题解剑指 Offer 09. 用两个栈实现队列题目描述题解剑指 Offer 30. 包含min函数的栈题目描述题解剑指 Offer 31. 栈的压入、弹出序列题目描述题解剑指 Offer 59 - I. 滑动窗口的最大值题目描述题解剑指 Offer 59 - II. 队列的最大值题目描述题解方法需要逆序输出时考虑用栈,利用栈后进先出的特性加入一个辅助栈保证顺序输出时考虑用队列,利用队列先进先出的特性采用

2021-06-16 16:31:59 130

原创 剑指offer题目汇总——链表

剑指offer题目汇总——链表方法和注意点题目剑指 Offer 18. 删除链表的节点题目描述题解剑指 Offer 22. 链表中倒数第k个节点题目描述题解剑指 Offer 23. 链表中环的入口节点题目描述题解剑指 Offer 24. 反转链表题目描述题解剑指 Offer 25. 合并两个排序的链表题目描述题解剑指 Offer 35. 复杂链表的复制题目描述题解剑指 Offer 52. 两个链表的第一个公共节点题目描述题解方法和注意点方法:顺序遍历使用多个指针一个指针一次走一步,一个指针一次走

2021-06-16 14:59:55 115

原创 剑指offer笔记——面试题15:二进制中1的个数

剑指offer笔记——面试题15:二进制中1的个数问题描述代码运行结果问题描述请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。代码#include <iostream>/** * 求一个整数的二进制中1的个数 * 常规解法,循环的次数等于整数二进制的位数,32位的整数需要循环32次 */int NumberOf1_1(int n){ int count = 0; unsigned int flag = 1;/* 起初看书的时候我还以为

2021-03-28 18:17:39 79

原创 剑指offer笔记——面试题14:剪绳子

剑指offer笔记——面试题14:剪绳子问题描述代码运行结果问题描述给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0], k[1], …, k[m]。请问k[0]×k[1]×…×k[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。个人对该题的补充解释:是把绳子减成m+1段,每段绳子的长度记为k[0], k[1], …, k[m];且每段绳子的长度k[i]均为整数(

2021-03-28 17:13:52 114

原创 剑指offer笔记——面试题13:机器人的运动范围

剑指offer笔记——面试题13:机器人的运动范围问题描述代码运行结果问题描述地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它每次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。请问该机器人能够到达多少个格子?数位之和:例如,方格(35, 38),其数位之和为:3+5+3+8=19代码#include <iostream>int movingCountCore(int, int, int, int, int, bool*);

2021-03-28 10:36:47 59

原创 剑指offer笔记——面试题12:矩阵中的路径

剑指offer笔记——面试题12:矩阵中的路径问题描述代码运行结果问题描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串"bfce"的路径(路径中的字母用下划线标出),不包含字符串"abfb"的路径a      b &nb

2021-03-27 23:47:37 73

原创 剑指offer笔记——面试题11:旋转数组的最小数字

剑指offer笔记——面试题11:旋转数组的最小数字问题描述代码运行结果问题描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1代码#include <iostream>#include <stdexcept>int Min(int *array, int length){ std:

2021-03-27 21:43:06 80

原创 剑指offer笔记——面试题10:斐波那契数列

剑指offer笔记——面试题10:斐波那契数列题目一:求斐波那契数列的第n项问题描述代码运行结果题目二:青蛙跳台阶问题问题描述题目一:求斐波那契数列的第n项问题描述写一个函数,输入n,求斐波那契数列的第n项。斐波那契额数列的定义如下:f(n)={0 n=01 n=1f(n−1)+f(n−2) n>1 f(n)=\left\{\begin{aligned}&0 & \ n = 0 \\ &1 & \ n = 1 \\

2021-03-27 16:51:23 86

原创 剑指offer笔记——面试题9:用两个栈实现队列

剑指offer笔记——面试题9:用两个栈实现队列问题描述代码运行结果问题描述用两个栈实现一个队列,队列的功能有:在队尾插入结点、在队列头部删除结点代码CQueue.h#ifndef CQUEUE_H#define CQUEUE_H#include <iostream>#include <stack>template <typename T>class CQueue{public: CQueue(); ~CQueue();

2021-03-22 20:05:46 73

原创 剑指offer笔记——面试题8:二叉树的下一个结点

剑指offer笔记——面试题8问题描述:代码:main.cpp#include <iostream>#include "BinaryTree.h"int main(){ BinaryTree<int> tree; tree.PreTravel(); tree.PostTravel(); tree.InorderTravel(); std::cout << tree.getNext(12)->data <

2021-03-22 13:16:45 69

原创 剑指offer笔记——面试题7:重建二叉树

剑指offer笔记——面试题6:从尾到头打印链表问题描述:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,输入前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6}代码:#include <iostream>#include <stdexcept>struct BinaryTreeNode{ int data; Bi

2021-03-21 21:26:17 76

数据结构与算法学习笔记——二叉树 C++实现——补充

数据结构与算法学习笔记——二叉树 C++实现——补充用循环的方式实现了二叉树的前序遍历、中序遍历、后续遍历用循环的方式实现了二叉树的前序遍历、中序遍历、后续遍历该程序是在之前文章 数据结构与算法学习笔记——二叉树 C++实现 的基础上做的改动。仅本文最后的BinaryTree.cpp中的三个遍历函数发生了改变代码:main.cpp#include <iostream>#include "BinaryTree.h"int main(){ BinaryTree<i

2021-03-19 22:45:16 107

原创 剑指offer笔记——面试题6:从尾到头打印链表

剑指offer笔记——面试题6:从尾到头打印链表问题描述:输入一个链表的头节点,从尾到头反过来打印出每个节点的值代码:#include <iostream>#include <stack>struct ListNode{ int Key; ListNode *next;};/** * 从尾到头打印链表 * 利用栈实现 * @param head 链表表头指针 */void PrintListReversingly_Iteratively(L

2021-03-18 22:59:21 67

原创 剑指offer笔记——面试题5:替换空格

剑指offer笔记——面试题5:替换空格问题描述:请实现一个函数,把字符串中的每个空格替换成"%20"。例如,输入"We are happy.",则输出"We20%are20%happy."。代码:#include <iostream>/** * 把字符串中的空格元素替换成"%20" * 时间复杂度为O(n^2),不足以拿到Offer * @param str 字符串指针 * @param length 字符串长度 */void ReplaceBlanck1(char *s

2021-03-18 21:06:50 73

原创 剑指offer笔记——面试题4:二维数组中的查找

剑指offer笔记——面试题4:二维数组中的查找问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该函数例如输入数组1 2 8 92 4 9 124 7 10 136 8 11 15输入整数7时函数返回true,输入5时返回false代码#include <iostream>/** * 判断一二维数组中是否含有某整数,从数组右上角元素入手 * @para

2021-03-17 23:46:08 72

原创 剑指offer笔记——面试题3:数组中重复的数字

剑指offer笔记——面试题3:数组中重复的数字题目一:找出数组中重复的数字题目二:不修改数组找出重复的数字时间复杂度O(n),空间复杂度O(n)的方法时间复杂度O(nlogn),空间复杂度O(1)的方法题目一:找出数组中重复的数字问题描述:在一个长度为n的数组里的所有数字都在0~n-1的范围内,找出数组中任意一个重复的数字。如长度为7的数组{2, 3, 1, 0, 2, 5, 3},判断是重复的,且输出重复的数字2或3代码:时间复杂度为O(n),空间复杂度为O(1)#include <i

2021-03-17 21:59:34 72

原创 数据结构与算法学习笔记——排序算法C++实现

数据结构与算法学习笔记——排序算法C++实现插入排序代码实现归并排序代码实现快排代码实现堆排代码实现1代码实现2主函数代码插入排序平均时间复杂度为O(N^2)插入排序是一种简单排序算法,简单排序算法的平均时间复杂度不会达到O(N^2)以下(因为每次交换相邻元素,逆序只减少1)代码实现/** * 插入排序 * @param a 数组指针 * @param asize 数组长度 */ template <typename T>void InsertionSort(T *a,

2021-03-15 20:25:40 121

原创 数据结构与算法学习笔记——图 C++实现

数据结构与算法学习笔记——图 C++实现1 概念2 图的表示方法3 算法拓扑排序图的搜索算法广度优先搜索(BFS)深度优先搜索(DFS)(单源)最短路径算法无权重图的最短路径算法有权重图的最短路径算法迪杰斯特拉算法Prim算法克鲁斯卡尔算法4 代码实现1 概念图是有限个互异的顶点和点对儿(边)的集合。图形结构的结点可以有多个前驱和多个后继其他概念:有向图、无向图;权重;邻接、路径、路径的长度、简单路径;回路、有向无环图(DAG);连通图、强连通图、基础图、弱连通图、完全图(完全图一定是连通图

2021-02-28 20:21:02 163

原创 数据结构与算法学习笔记——二叉树 C++实现

数据结构与算法学习笔记——二叉树 C++实现二叉树1 特点2 遍历的方法前序遍历后序遍历中序遍历层序遍历3 二叉树的实现二叉查找树(BST) ADT1 特点2 包含的操作3 BST ADT实现二叉树1 特点二叉树是所有结点的子结点都不超过两个的树关于二叉树的概念:完美二叉树、完全二叉树2 遍历的方法前序遍历先访问根节点,再访问每一个孩子后序遍历先访问每一个孩子再访问根结点中序遍历二叉树独有的遍历方式先访问左孩子,再访问根节点,再访问右孩子此处应该有图层序遍历先访问第n层,再访问

2021-02-17 20:46:16 137

原创 数据结构与算法学习笔记——树 C++实现

数据结构与算法学习笔记——树 C++实现1 特点2 遍历的方法前序遍历后序遍历层序遍历3 实现1 特点树形结构,每个结点(除了根结点)具有唯一的前驱,可以有多个后继树是递归定义的:一个非空的树,有一个根结点、以及0个或若干个非空子树,子树与根结点由一条边相连(子树中又有自己的根结点并可以有子结点、甚至子树的子树)由于树是递归定义的,因此树的建立、删除、遍历以及后面BST ADT的一些操作都可以用遍历的方式实现关于树的概念:子结点和父结点、叶子结点、兄弟、路径和路径长度、(一结点的)深度和高度、(一

2021-02-17 15:19:54 130

原创 数据结构与算法学习笔记——栈ADT C++实现

数据结构与算法学习笔记——栈ADT C++实现1 特点2 包含的操作3 实现方式3.1 基于数组实现(应用较多)3.2 基于单链表实现1 特点栈的数据结构为线性结构栈只能在同一位置进行插入和删除,这个位置叫做栈顶。后进先出(LIFO),生活中的例子有坐电梯、去西红门绞肉机坐地铁2 包含的操作入栈(压栈)出栈(弹出)读栈顶元素3 实现方式3.1 基于数组实现(应用较多)基于数组实现(非vector)的空间是静态的,空间不能再扩展,因此会出现空间不够的情况;但是从ADT角度出发不会有空

2021-02-12 21:58:23 938 1

原创 数据结构与算法学习笔记——队列ADT C++实现

数据结构与算法学习笔记——队列ADT C++实现1 特点2 包含的操作3 实现方式4 队列与循环队列4.1 队列4.2 循环队列1 特点队列的数据结构为线性结构队列只能在一端完成插入,在另一端完成删除。先进先出(FIFO),生活中的例子有买票排队、打印机的打印队列2 包含的操作入队列出队列3 实现方式基于数组实现4 队列与循环队列4.1 队列编程时主要考虑的是指针移动操作和数据操作的顺序,以及空间是否为满/空(相应的,不能入/出队列)存在的缺点是空间越用越少Quence.h

2021-02-12 21:28:45 320 1

原创 数据结构与算法学习笔记——List ADT C++实现

这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录

2021-02-12 20:39:58 1066

原创 数据结构与算法学习笔记——基本概念

数据结构与算法 C++实现笔记——线性表线性表线性表的定义线性表的功能功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片代码实现SmartyPants如何创建一个注脚注释也是必不可少的KaTeX数学公式UML 图表FLowchart流程图参考文献导出导入线性表你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。线性表的定义线性表的功能我们对Markdow

2021-02-12 17:32:40 113 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除