自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客面试心得之五味杂陈

题1:指针和引用的区别:1.指针是一个实体,而引用仅是个别名。2.引用必须被初始化,而指针不必。3.引用只能在定义时被初始化一次,之后不可变;指针可以改变所指的对象;4.可以有const指针但是没有const引用。5.不存在指向空值的引用,但是存在指向空值的指针,即引用不能为空,指针可以为空;6."sizeof"引用得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(是指向的变量或对象的地址)的大小。7.指针和引用的自增(++)运算意义不一样;指针自增指向下一个地址,

2021-12-08 20:57:53 340

原创 密码学--数学基础(公式推导及原理证明)

问题:ax mod b=c a^x ~ mod ~ b = c ax mod b=c已知a,b互质(两个数的最大公约数为1),给出a,b,c三个正整数,求x的自小正整数解。欧几里得算法概念:整数a,b的最大公约数一般表示为 gcd(a,b)终极奥义:gcd(a,b) = gcd(b,a%b)=> 将大规模的问题转变成小规模的问题 ,当转变成gcd(c,0)时,c即为最大公约数 1 当a>b,缩小问题规模的作用 2 当a<b,相当

2021-12-05 17:37:42 1180

原创 从前缀和数组到树状数组

前缀和前缀和数组:初始化:O(n)时间复杂度,顺序扫描原数组即可查询区间和:O(1)时间复杂度,S[j]-S[i]即为原数组i到j的区间和单点修改:O(n)时间复杂度,需要修改S[i]~S[n]的所有值慢,是因为S[i]的值与之前原数组中所有项都有关系弱化这种关系,即可加快单点修改速度,当然也会丧失部分查询速度,但是这种取舍是值得的。lowbit函数定义:lowbit(i)代表i这个数字,二进制表示的最后一位1的位权。lowbit(x) = x & (-x)树状数组改进前缀和

2021-11-28 19:20:40 173

原创 C++随笔

1、 x&-x表示含义-x的值是在x的值的基础上进行按位取反~x之后,加一所得,等价于x & -x == x & (~x + 1)当x为偶数时,0000 0100 1110,按位取反结果为1111 1011 0001, 加一后为 1111 1011 0010。得到的结果与原x相与之后结果,只会有一位保留为1,这个结果与原x的末尾0的个数是一致的0000 0100 1110&1111 1011 0010 = 0000 0000 0010所以当x为偶数时结论:

2021-10-31 07:33:15 127

原创 字典树与双数组字典树

树的节点代表集合树的边代表关系

2021-10-30 19:34:24 156

原创 字符串经典匹配算法:KMP、Sunday与Shift-And

暴力匹配算法注:母串=文本串=长串#include<iostream>#include<cstdio>#include<queue>#include<stack>#include<algorithm>#include<string>#include<map>#include<set>#include<vector>using namespace std;//字符串匹配值暴力匹配

2021-10-20 14:24:53 144

原创 动态规划算法及优化

数学归纳法Step1:验证K0成立Step2:证明如果K1成立,那么K(i+1)也成立Step3:联合Step1与Step2,证明由K0->Kn成立状态转移方程中的重点状态:一个数学符号,外加一个语义描述决策:从所有可能产生最优解的状态中,选择一个最大值阶段:本阶段只依赖上一个阶段。leetcode-714. 买卖股票的最佳时机含手续费状态定义:dp[i][0]代表不持有股票的最大收益dp[i][1]代表持有股票的最大收益状态转移方程:**dp[i][0]来自:**1.i-

2021-09-24 22:46:46 285

原创 递推算法及解题套路

递推算法及解题套路递推基础算法讲解:斐波那却数列的递推公式:F(n) = F(n-1) + F(n-2)例题:leetcode-70.爬楼梯class Solution {public: int climbStairs(int n) { // if(n == 1){return 1;} // if(n == 2){return 2;} // int a = 1, b = 2, temp; // for(int i = 3; i

2021-09-16 13:00:22 567

原创 手撕红黑树(上、下)--插入调整

红黑树的平衡条件1.每个节点非黑即红。2.根结点是黑色。3.叶节点(NIL)是黑色。(这个叶节点通常是不被画出来的NIL节点)4.如果一个节点是红色,则它的两个子节点都是黑色。5.从根结点出发到所有叶节点路径上,黑色节点数量相同。问题1: 红黑树中,最长路径和最短路径长度的关系?答:根据平衡条件第4、5两点最短路径,都是黑色为最短路径,红黑相间为最长路径。所以可得到最长是最短的两倍。问题2:怎么理解条件3中的NIL结点答:就像文章中的标点符号,虽然他不属于文章内容部分,平时也不会

2021-08-24 21:13:35 246

原创 手撕AVL树-N*!!!

二叉排序树的基础知识名称:二叉排序树、二叉搜索树性质:1、左子树<根结点2、右子树>根结点用途:解决与排名相关的检索要求构造二叉排序树:/* * @Author: mikey.peng * @Date: 2021-08-08 19:52:23 * @Last Modified by: mikey.peng * @Last Modified time: 2021-08-08 19:52:23 */#include<iostream>#includ

2021-08-15 11:41:32 111

原创 leetcode专项面试题解析

Leetcode-1367. 二叉树中的列表(树+递归)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNod

2021-08-08 14:54:06 176

原创 动态规划初阶-N-0+leetcode解题思路

本篇拜读于三叶大佬并结合自身总结兼有此得动态规划 问题首先从【路径问题】开始路径问题较可视化并得出DP转移路径路径题目丰富,层次明显,容易上手。leetcode - 62.不同路径class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> dp(m, vector<int>(n,0)); dp[0][0] = 1;

2021-07-21 15:09:14 320

原创 黑客攻防与网络安全-N-0

章1 入门黑客:通过攻击来研究漏洞,从而提高系统的安全性相关术语:1.肉鸡:(比喻)指代哪些能够被黑客随意操纵的计算机,可以是windows、UNIX、Linux系统,可以是一般的个人计算机,也可以是大型的服务器,并不被对方发觉。2.木马:伪装成正常的程序,当程序运行时可获得整个系统的运行权限,如灰鸽子、黑洞、PcShare等。3.网页木马:伪装成一般的网页文件或者将木马代码插入到正常的网页文件中,当访问时,网页木马就会运用对方系统的漏洞主动将配置好的木马客户端下载到对方的计算机上主动运行,从而控

2021-07-20 21:41:35 1500 4

原创 单调队列及其经典问题

单调队列适合维护区间最值问题(滑动窗口最值问题)单调队列:入队操作:队尾入队,会把之前破坏单调性的元素都从队尾移除(维护单调性)。出队操作:如果队首元素超出区间范围,就将元素从队首出队。元素性质:队首元素,永远是当前维护区间的(最大或者最小)值。序列中的每一个元素,在依次入队的过程中...

2021-07-07 22:04:11 132

原创 深搜(DFS)与广搜(BFS):初始问题状态空间

广度遍历:方便最优化问题的求解leetcode题目实例解析993. 二叉树的堂兄弟节点深搜public: int dfs(TreeNode *root,int x,TreeNode *&father){ if(root==nullptr) return -1; if(root->val == x) return 0; father = root; int l=dfs(root->left,x,father);

2021-07-05 17:12:12 106

原创 哈希表与布隆过滤器

哈希表与布隆过滤器哈希操作: 高维空间到低维空间的映射(映射规则自己规定)。 (哈希表的低维数据就是数组下标。)哈希冲突无法避免因此更加强调处理方法哈希表的处理方法:(1)开放定址法。(线性探测法:在已有计算下标情况下,再计算下面的一个下标。)(二次再散列(分别+1^ 2 + 2^2 +2 ^3 +…)使用较多)(2)再哈希法。(需要设定哈希函数与其他哈希处理方式配合使用兜底)(3)建立公共溢出区。(建立公共溢出缓冲区(可使用红黑树O(logn)、数组O(n)进行存放))(4)拉链(链表)法。

2021-06-13 17:24:34 373 1

原创 Binary_Search(二分算法)

二分查找:在有序数组中查找一个值通过不断 缩小查找区间 达到查找的目的 调节指针位置如果arr[mid]<x,min = mid+1;如果arr[mid]>x,max = mid-1;如果arr[mid] == x, 找到结果;时间效率为O(logn) #include<iostream>#include<cstdio>#include<queue>#include<stack>#include<algorithm>

2021-06-06 15:44:42 152

原创 归并排序(merge_sort):从二路到多路

归并排序基础思想就是 分治左边处理一下,得到左边的信息;右边处理一下,得到右边的信息;最后再处理,横跨左右两边的信息。代码演示:```cpp//二路归并void merge_sort(int *arr,int l,int r){ if(l>=r) return ; int mid = (l+r)>>2; merge_sort(arr,l,mid);//left sort merge_sort(arr,mid+1,r);//right sort

2021-05-15 15:43:47 254

原创 快去排序(Quick-sort)及优化

基础版 快排:#include<iostream>#include<algorithm>#include<cstdio>#include<string>#include<sstream>#include<map>#include<set>#include<vector>#include<unordered_map>#include<time.h>#include&lt

2021-05-12 17:34:04 250

原创 二叉树与经典问题

二叉树与经典问题欢迎使用Markdown编辑器树的结构定义快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章FLowchart流程图导出与导入导出导入##欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细

2021-04-05 00:03:46 71

空空如也

空空如也

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

TA关注的人

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