自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 问答 (7)
  • 收藏
  • 关注

原创 代码随想录day10:栈与队列part01(用栈实现队列,用队列实现栈)

时间复杂度: push和empty为O(1), pop和peek为O(n)空间复杂度: O(n)

2024-01-19 18:34:55 388

原创 代码随想录day8:字符串part01(反转字符串,反转字符串II,替换数字,翻转字符串里的单词,右旋转字符串)

字符串part01反转字符串时间复杂度: O(n)空间复杂度: O(1)

2024-01-17 23:09:05 370

原创 代码随想录day6:哈希表part01(有效的字母异位词,两个数组的交集,快乐数,两数之和)

时间复杂度: O(n)空间复杂度: O(1)

2024-01-15 23:13:58 394

原创 代码随想录day4:链表part02(两两交换链表中的节点 ,删除链表的倒数第N个节点,链表相交,环形链表II)

交换过程分三个步骤时间复杂度:O(n)空间复杂度:O(1)

2024-01-13 18:33:58 385

原创 代码随想录day3:链表part01(移除链表元素 ,设计链表,反转链表)

法一:直接使用原来的链表来进行移除节点操作时间复杂度: O(n)空间复杂度: O(1)法二:设置一个虚拟头结点在进行移除节点操作时间复杂度: O(n)空间复杂度: O(1)

2024-01-12 23:33:30 354

原创 代码随想录day2:数组part02(有序数组的平方 ,长度最小的子数组 ,螺旋矩阵II,数组章节总结)

法一:暴力,先把每个元素平方再排序,时间复杂度O(n + nlogn)法二:双指针,时间复杂度O(n)二、长度最小的子数组法一:暴力,时间复杂度:O(n^2),空间复杂度:O(1)法二:滑动窗口,时间复杂度:O(n),空间复杂度:O(1)为什么时间复杂度是O(n)。不是for里放一个while就是O(n^2), 主要是看每一个元素被操作的次数,每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被操作两次,所以时间复杂度是 2 × n 也就是O(n)。类似二分的思想,

2024-01-11 22:17:29 462

原创 代码随想录day1:数组part01(二分查找 ,删除数组指定元素)

1、维护[left,right]2、维护[left,right)时间复杂度:O(n^2)二、删除数组指定元素。空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)

2024-01-10 23:38:12 384 1

原创 判断一棵树是否为完全二叉树

// 判断一棵树是否为完全二叉树#include<iostream>#include<queue>#include<assert.h>using namespace std;const int N = 20;// 定义树的节点的结构体struct BTNode{ char data; // 数据域 BTNode* left; // 左孩子指针 BTNode* right; // 右孩子指针};class BTree{public:.

2021-11-13 13:58:53 507

原创 二叉树的层次遍历

// 二叉树的层次遍历#include<iostream>#include<string>#include<queue>#include<assert.h>using namespace std;const int N = 20;// 定义树的节点的结构体struct BTNode{ char data; // 数据域 BTNode* left; // 左孩子指针 BTNode* right; // 右孩子指针};class.

2021-11-13 13:57:14 270

原创 静态队列模板

//模拟队列#include<iostream>#include<string>using namespace std;const int N = 100010;//在队尾插入元素,在队头弹出元素int q[N], head, tail; // 分别表示队列、队头、队尾// 数组:队头------------队尾//插入void push(int x){ q[tail++] = x;}int main(){ int m; cin &gt...

2021-11-03 23:29:41 124

原创 静态栈模板

//模拟栈#include<iostream>#include<string>using namespace std;const int N = 100010;int stk[N], tt; // 分别表示栈和栈里的元素个数int x;// 插入void push(int x){ stk[++tt] = x;}// 弹出void pop(){ tt--;}// 判断栈是否为空bool check(){ if (tt &gt...

2021-11-03 23:25:26 82

原创 二分查找模板

// 二分查找#include<iostream>using namespace std;const int N = 1e5 + 10;int n, m; // 数组元素个数n和m个询问int q[N]; // 待查找的有序数组int main(){ cin >> n >> m; for (int i = 0; i < n; i++) cin >> q[i]; while (m--) { int x; cin &g.

2021-10-31 14:40:45 70

原创 前缀和模板

预处理时间复杂度:求前缀和时间复杂度:用空间来换取时间// 前缀和#include<iostream>using namespace std;const int N = 1e5 + 10;int n, m;int a[N], s[N]; // 输入的数组和前缀和数组,已初始化s[0]=0// 求前缀和的公式:s[r] - s[l - 1]int main(){ cin >> n >> m; for (int i = 1; i &

2021-10-29 13:41:55 73

原创 计算后缀表达式(栈)

AC代码// 计算后缀表达式的值(栈)#include<iostream>#include<string>#include<cmath>using namespace std;const int N = 1010;int stk[N]; // 定义栈int head = -1; // 定义栈顶// 入栈void push(int x){ stk[++head] = x;}// 出栈int pop(){ return stk..

2021-10-28 00:30:56 88

原创 bfs模板

// BFS - 走迷宫#include<iostream>#include<cstring>#include<algorithm>using namespace std;typedef pair<int, int> PII;const int N = 110;int n, m;int g[N][N]; // g数组存地图int d[N][N]; // d数组存储每个点到起点的距离PII q[N*N]; // 模拟实现的队列i.

2021-10-24 21:14:35 122

原创 dfs模板

// DFS - 排列数字#include<iostream>using namespace std;const int N = 10;int n;int path[N]; // 该条路径上的数字排列bool st[N]; // 检查该数字是否用过,初始化为false,即未用过void dfs(int u){ // 该排列枚举已完成,输出该情况的排列 if (u == n) { for (int i = 0; i < n; i++) printf("%d.

2021-10-24 16:21:59 1541

原创 c++ STL中unique函数的模拟实现

切记:传入unique函数中的数组必须有序!vector<int>::iterator unique(vector<int> &a){ int j = 0; for (int i = 0; i < a.size(); i++) { if (!i || a[i] != a[i - 1]) // !i 作用:第一个元素直接放到数组中 a[j++] = a[i]; } return a.begin() + j;}...

2021-10-24 15:33:07 1751

原创 堆排序代码模板

堆本质是一个完全二叉树,在这里我们通过建小根堆的方法来完成堆的升序排序,并且我们在此用一个一维数组来存储堆代码模板如下// 堆排序#include<iostream>#include<algorithm>using namespace std;const int N = 1e5 + 10;int n, m;int h[N], cnt; // 定义堆和一个需要临时记录n的变量// 将堆中的一个元素向下调整(下沉)操作void down(int u)

2021-10-23 17:04:57 122

原创 括号匹配(静态栈实现)

// 括号匹配#include<iostream>#include<string>using namespace std;const int N = 1010;char stk[N];int tt; // 栈内的元素个数int flag;// 入栈void push(char x) { stk[tt++] = x;}// 出栈char pop(){ if (tt == 0) { cout << "The stack is e.

2021-10-07 11:08:10 100

原创 并查集模板

// 并查集#include<iostream>using namespace std;const int N = 1e5 + 10;int p[N]; // 存储集合元素// 返回x的祖宗节点int find(int x){ // 若p[x]不是祖宗节点 if (p[x] != x) p[x] = find(p[x]); /* 经上述可以发现, 每个集合中只有祖宗节点的p[x]值等于他自己, 即: p[x] = x; */ return...

2021-09-28 15:32:38 62

原创 栈的序列(给一个进栈序列,判断某个序列是否是它可能的一个出栈序列)

#include<iostream>#include<string>#include<stack>using namespace std;int main(){ int n; cin >> n; while (n--) { string x1, x2; cin >> x1 >> x2; stack<char> stk; while (!stk.empty()) stk.pop(...

2021-09-23 17:55:16 875 3

原创 抽签问题(枚举)

#include<iostream>using namespace std;int main(){ int n, m, q[55], flag = 0; cin >> n; for (int i = 0; i < n; i++) cin >> q[i]; cin >> m; // 核心操作:枚举 for (int a = 0; a < n;a++) for (int b = 0; b < n;b++) for...

2021-09-23 17:23:33 107

原创 求多个数的最大公约数

#include <iostream> #include <stdio.h>using namespace std;// 最大公约数long long gcd(long long a, long long b){ if (a < b) // 通过异或交换a和b而不创造第三个变量,保证 a>=b { a ^= b; b ^= a; a ^= b; } return b == 0 ? a : gcd(b, a%b);}// 最小...

2021-09-23 16:51:58 171

原创 Linux 小程序 —— 进度条

行缓冲区概念在写程序之前,我们先弄清楚一些问题

2021-08-11 18:01:28 277 1

原创 Linux 基础开发工具(yum、vim、gcc/g++、gdb)

1

2021-08-08 21:59:07 1968 3

原创 Linux 新建/删除普通用户

新建:设置好密码后可以按照如下操作登录删除:如果没成功删除,有报错,说明该用户还在被某个进程占用,ctrl + d 退出当前用户就可以了

2021-08-07 16:43:44 134

原创 Linux zip/unzip指令

此刻我所在的目录和文件结构是这样的(还未安装tree的工具,只能这样凑合着看了)其中 file.txt 里面有三条语句,temp.txt 里面有一条语句现在我要将我这个code目录下的所有文件进行压缩打包,就要用到zip指令此条指令的意思是,将当前目录下的所有文件压缩打包到一个名叫 temp.zip的文件里。然后文件已经全部被压缩打包了,再输入 ll 指令查看,发现当前目录下出现了一个 temp.zip 的压缩包再将文件剪切到上一级目录下再将刚刚的...

2021-08-01 15:21:06 218

原创 Linux (head、tail、echo指令、输出重定向、追加重定向、管道)

1

2021-08-01 12:17:32 1277

原创 Linux 中几个重要的热键

1.↑↓键可以翻看你最近使用的命令2. history可以查看你一共敲过多少行命令3.ctrl + d退出命令行4.ctrl + c退出失控程序或死循环程序5.tab自动补齐6.ctrl + r从历史记录中匹配你当前敲的命令行并自动补全7.file + 文件名查看文件更多的属性信息...

2021-07-30 09:08:18 110

原创 Linux 操作系统基础(常见指令)

01.ls指令语法:ls[选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息输入ls,显示了三个文件名,可以看到我们在该目录下有三个子文件,分别是test1.txt test2.txt test3.txt但只显示文件名还不够,若我们想查看文件的一些属性信息的话,我们可以输入指令ls带一个选项-l,就可以查看属性信息了所以指令 ls -l 代表显示文件更多的信息如图所示,文件名前面的那些信息就是该文件对...

2021-07-26 16:53:55 2496

原创 蜜蜂路线(高精度加法)

AC代码#include<iostream>#include<vector>#include<string>using namespace std;//C = A + Bvector<int> add(vector<int>& A, vector<int>& B){ vector<int> C; int t = 0; for (int i = 0; i < A.si...

2021-07-26 15:41:37 448

原创 二分查找(最基础的版本)

例如给定一组单调递增的数1 2 3 4 5 6 7 8 9 10比如我想找9,常规思想是需要遍历整组数而二分的思想是:先将9与中间的数比较,9比中间数大,所以查找范围缩小到[中间数+1,末尾数]按此方法逐步缩小范围,最终找到所需要找的数代码如下//基础二分#include<iostream>using namespace std;int q[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int n = 10;int se

2021-07-22 16:01:57 98

原创 归并排序代码模板

#include<iostream>using namespace std;const int N = 1e6 + 10;int n;int q[N], tmp[N];void merge_sort(int q[], int l, int r){ if (l >= r) return; int mid = l + r >> 1; merge_sort(q, l, mid), merge_sort(q, mid + 1, r); int k = 0.

2021-07-21 08:22:02 35

原创 快速排序代码模板

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;const int N = 1e6 + 10;int n;int q[N];void quick_sort(int q[], int l, int r){ if (l >= r) return; int x = q[l], i = l - 1, j = r + 1; while (i < j) { do i++.

2021-07-20 16:48:04 49

原创 日期类(仅提供类的实现,主函数没写)

#include<iostream>using namespace std;int Year[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };class Date{public: Date(int year1 = 1900, int month1 = 1, int day1 = 1) // 全缺省的构造函数 { if (year1 >= 0 && month >= 1 &amp.

2021-07-17 14:17:20 50

原创 c++类和对象(二)(this指针,默认成员函数)

隐藏的this指针#include<iostream>using namespace std;class Date{public: //编译会增加一个隐含的参数->void Init(Date* this,int year,int month,int day) void Init(int year, int month, int day) { _year = year; _month = month; _day = day; }private: int

2021-07-13 11:13:35 182

原创 【离散数学】命题逻辑与等值演算

2021-06-15 17:33:45 122

原创 【离散数学】图论 通路与回路

2021-06-15 17:20:40 2692

原创 【离散数学】图论 图的基本概念

2021-06-15 17:10:12 144 1

原创 c++类和对象(一)(面向对象与面向过程的区别,写一个类,计算类的大小)

1.面向过程和面向对象的初步认识c语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。c++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。举个栗子:外卖系统面向过程:下单、接单、送餐(关注的是这三个过程,实现这三个过程的函数)面向对象:客户、商家、骑手(关注的是这三个对象之间的关系)//c语言//比如定义一个栈struct Stack{ STDataType* a; int size;..

2021-06-14 19:48:43 68

空空如也

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

TA关注的人

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