自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 问答 (2)
  • 收藏
  • 关注

原创 排序算法及Java实现总结

排序算法及Java实现总结。

2022-12-20 14:05:42 315

原创 跳台阶问题(类似斐波那契数列)

跳台阶问题(类似斐波那契数列)的两种做法

2022-11-27 13:40:12 340

原创 KMP字符串匹配算法

same可能就是其他文章中提到的next数组。

2022-11-24 22:15:05 491

原创 二分查找(搜索区间为左闭右开)

二分查找搜索区间为左闭右开时的思路。

2022-08-05 14:27:04 312

原创 [ 笔记 ] 计算机网络安全_7_虚拟专网技术

VPN技术

2022-05-28 10:50:42 1536

原创 [ 笔记 ] 计算机网络安全_6_入侵检测系统

入侵系统检测

2022-05-28 10:45:32 786

原创 [ 笔记 ] 计算机网络安全_5_防火墙原理与设计

防火墙原理与设计

2022-05-28 10:43:05 2598

原创 [ 笔记 ] 计算机网络安全_4_网络扫描和网络监听

网络扫描与监听

2022-05-28 10:37:49 2332 1

原创 [ 笔记 ] 计算机网络安全_3_Web安全

[笔记] 计算机网络安全:(3)Web安全网络安全基础internet协议的安全性Web安全网络扫描和网络监听防火墙原理与设计入侵检测系统VPN技术目录[笔记] 计算机网络安全:(3)Web安全@[TOC](目录)3.1 Web安全概述3.1.1 Web服务器的安全Web应用的信息收集攻击Web服务器软件攻击Web应用程序攻击Web数据内容3.1.2 Web客户端的安全3.1.3 Web通信信道的安全3.2 Web服务器指纹识别3.2.1 Web服务器指纹介绍3.2.2 Web服务器B

2022-05-28 10:25:01 709

原创 [ 笔记 ] 计算机网络安全_2_internet协议的安全性

[笔记] 计算机网络安全:(2)internet协议的安全性2.1 网络层协议2.1.1 IP协议的安全性IP数据报格式潜在的安全问题IP协议未验证IP地址IP协议支持定向广播IP协议未对数据加密IP协议仅对首部进行校验IP源路由选项支持IP协议支持分段重组IP安全问题1:针对IP地址的攻击IP协议未验证IP地址的真实性IP地址欺骗攻击源IP地址欺骗:IP协议缺乏对地址真实性的认证机制,不能保证数据就是从数据包中给定的源地址发出的。目的IP地址欺骗:IP协议也不能保证

2022-05-28 10:20:51 986

原创 [ 笔记 ] 计算机网络安全_1_网络安全基础

计算机网络安全:(1)网络安全基础

2022-05-28 10:10:16 1062

原创 [ 信息系统安全实验1 ] 软件安全:格式化字符串漏洞实验

华科信息系统安全实验1 格式化字符串漏洞实验

2022-05-27 15:59:26 2636 1

原创 [ 环境搭建 ] Ubuntu安装后环境配置

Ubuntu 20.04LTS安装后环境配置换源直接编辑,所在文件夹中已经有备份文件sources.baksudo gedit /etc/apt/sources.list我常用阿里源,觉得企业维护可能好一点deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted un

2022-01-25 23:06:52 895 2

原创 [ 笔记 ] 操作系统复习笔记

操作系统复习笔记

2022-01-10 19:43:48 1214

原创 [ 笔记 ] 计网复习

计算机网络复习笔记

2021-12-29 19:27:01 1758

原创 [ 笔记 ] 编译原理复习

HUST编译原理复习笔记

2021-12-24 11:48:51 3701 1

原创 [ 回溯 ] 复原IP地址

93. 复原 IP 地址 - 力扣(LeetCode) (leetcode-cn.com)复原IP地址DFS回溯ip有效性的判断什么时候进入下一层class Solution {public: vector<string> ans; string path; void DFS(string& s, int index, int pointNum) { // 结束条件与返回值有关,返回值有三个点时返回 if (po

2021-07-25 17:23:10 127

原创 [ 回溯 ] 分割回文串

131. 分割回文串 - 力扣(LeetCode) (leetcode-cn.com)分割回文串与数组组合不同的是,数组是取数,该题是找分割线class Solution {public: // 返回值 vector<vector<string>> ans; vector<string> path; // DFS void DFS(string& s, int index) { // 边

2021-07-25 17:22:37 77

原创 [ 回溯 ] 电话号码的字母组合

17. 电话号码的字母组合 - 力扣(LeetCode) (leetcode-cn.com)电话号码的字母组合DFS回溯class Solution {public: // 将9键映射到数字 const string mp[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz",}; vector<string> ans; string path; void D

2021-07-25 17:21:52 100

原创 [ 回溯 ] 组合总和III

216. 组合总和 III - 力扣(LeetCode) (leetcode-cn.com)组合总和 IIIDFS回溯剪枝, 剪枝是根据条件剪枝,比如在for循环根据for剪枝, 在边界处根据n剪枝class Solution {public: vector<vector<int>> ans; vector<int> path; void DFS(int k, int n, int sum, int index) {

2021-07-25 17:21:11 57

原创 [ 回溯 ]组合总和II

40. 组合总和 II - 力扣(LeetCode) (leetcode-cn.com)组合总和IIDFS回溯去重class Solution {public: vector<vector<int>> ans; vector<int> path; void DFS(vector<int>& candidates, int target, int sum, int index, vector<bool&gt

2021-07-25 17:20:25 67

原创 [ 回溯 ] 组合总和

39. 组合总和 - 力扣(LeetCode) (leetcode-cn.com)组合总和DFS回溯剪枝遇到可以重复取数怎么办?class Solution {public: vector<vector<int>> ans; vector<int> path; void DFS(vector<int>& candidates, int target, int sum, int index) {

2021-07-25 17:19:52 63

原创 [ 回溯 ] 组合

77. 组合 - 力扣(LeetCode) (leetcode-cn.com)组合模板void backTracking(...) { if (到达边界) { 保存结果; 返回; } for (本层处理逻辑) { 保存本次处理数; backTracking(); 回溯; }}DFS回溯剪枝class Solution {public: vector<vecto

2021-07-25 17:19:02 59

原创 [ 二叉树 ] 有序数组转化为平衡二叉搜索树

108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode) (leetcode-cn.com)有序数组转化为平衡二叉搜索树递归将数组按中点分治递归自然构造成平衡二叉搜索树平衡来源于中点分治搜索树来自于有序,利用的是二叉搜索树的性质,和递归体中遍历方式无关class Solution {public: TreeNode* traversal(vector<int>& nums, int left, int right) { // 递归边界

2021-07-22 15:14:06 111

原创 [ 二叉树 ] 修剪二叉搜索树

669. 修剪二叉搜索树 - 力扣(LeetCode) (leetcode-cn.com)修剪二叉搜索树递归一棵树当前结点值小于low,那么保留右子树一棵树当前节点值大于high,那么保留左子树一棵树当前节点值在[low, high] 之间, 保留当前树。class Solution {public: TreeNode* trimBST(TreeNode* root, int low, int high) { // 修剪到空结点时返回 if (!ro

2021-07-22 15:13:29 89

原创 [ 二叉树 ] 删除搜索二叉树中的结点

450. 删除二叉搜索树中的节点 - 力扣(LeetCode) (leetcode-cn.com)删除搜索二叉树中的结点递归没有孩子,直接删除没左树,右树补;没右树,左树补左右树都存在,左树补到右树最左结点的左边; 或右树补到左树最右结点的右边class Solution {public: TreeNode* deleteNode(TreeNode* root, int key) { if (!root) return nullptr; // 寻找删除点

2021-07-22 15:12:53 69

原创 [ 二叉树 ] 二叉搜索树中的插入操作

701. 二叉搜索树中的插入操作 - 力扣(LeetCode) (leetcode-cn.com)二叉搜索树中的插入操作递归多说一句: Leetcode提供的默认函数并不是确定的, 我们函数的返回值和参数需要我们自己思考。比如,我们要插入一个结点,我们要找到新结点,此处是null;我们要找到位置的父结点。此时我们在找到结点时返回父结点就很简单。所以我们要根据我们要干什么先确定参数和返回值class Solution {public: TreeNode* insertIntoBST(

2021-07-22 15:12:06 254

原创 [ 二叉树 ] 二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树 - 力扣(LeetCode) (leetcode-cn.com)二叉搜索树转换为累加树递归重要思想: 前序中序后序不是唯一,按我们的想法选择 中 左 右, 中 右 左, 左 中 右, 右 中 左, 左 右 中, 右 左 中 合适的来解class Solution {public: int pre; void traversal(TreeNode* cur) { // 递归边界 if (!cur) return

2021-07-22 15:11:35 65

原创 [ 二叉树 ] 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 - 力扣(LeetCode) (leetcode-cn.com)二叉树的最近公共祖先递归自底向上回溯后序遍历class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { // 自底向上 == 回溯 == 后序遍历 if (!root || root == p || root == q)

2021-07-21 21:03:41 60

原创 [ 二叉树 ] 二叉搜索树中的众数

501. 二叉搜索树中的众数 - 力扣(LeetCode) (leetcode-cn.com)二叉搜索树中的众数递归该非严格意义上的二叉搜索树的**中序遍历结果是不严格递增**的保存上次访问指针class Solution {public: int maxCount; int count; TreeNode* pre; vector<int> ans; void searchBST(TreeNode* cur) { if (

2021-07-21 21:03:03 106

原创 [ 二叉树 ] 二叉搜索树的最小绝对差

530. 二叉搜索树的最小绝对差 - 力扣(LeetCode) (leetcode-cn.com)二叉搜索树的最小绝对差递归二叉搜索树的**中序遍历结果是严格递增**的保存中序遍历向量再处理class Solution {public: // 向量保存中序遍历结果 vector<int> value; // 中序遍历 void traversal(TreeNode* root) { if (!root) return;

2021-07-21 21:02:26 65

原创 [ 二叉树 ] 验证二叉搜索树

98. 验证二叉搜索树 - 力扣(LeetCode) (leetcode-cn.com)验证二叉搜索树递归二叉搜索树的**中序遍历结果是严格递增**的测试用例中最小取到了LONG_MINclass Solution {public: // 对于第一次比较,我们需要找到一个测试用例中的最小值 long max = LONG_MIN; bool isValidBST(TreeNode* root) { if (!root) return true;

2021-07-21 21:01:51 72

原创 [ 二叉树 ] 二叉搜索树中的搜索

700. 二叉搜索树中的搜索 - 力扣(LeetCode) (leetcode-cn.com)二叉搜索树中的搜索二叉搜索树(BST)定义二叉搜索树的左子树(非空)上所有结点值均小于根结点值二叉搜索树的右子树(非空)上所有结点值均大于根结点值二叉搜索树的子树仍为二叉搜索树递归前序遍历class Solution {public: TreeNode* searchBST(TreeNode* root, int val) { if (!root) return n

2021-07-21 21:00:52 59

原创 [ 二叉树 ] 合并二叉树

617. 合并二叉树 - 力扣(LeetCode) (leetcode-cn.com)合并二叉树递归不存在子树对当前树的影响,遍历方式任意class Solution {public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if (!root1) return root2; if (!root2) return root1; // 注意返回值可能是原root1, 可以是

2021-07-21 21:00:13 60

原创 [ 二叉树 ] 最大二叉树

654. 最大二叉树 - 力扣(LeetCode) (leetcode-cn.com)最大二叉树递归明确: 分治左闭右开原则vector使用下标代替分割优化空间class Solution {public: TreeNode* constructMaximumBinaryTree(vector<int>& nums) { return traversal(nums, 0, nums.size()); } TreeNode* tra

2021-07-21 20:59:34 85

原创 [ 二叉树 ] 中序和后序遍历确定二叉树

106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) (leetcode-cn.com)中序和后序遍历确定二叉树递归明确:分治左闭右开切割class Solution {public: TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { // 构造返回值 TreeNode* root = new TreeNode

2021-07-21 20:59:02 848

原创 [ 二叉树 ] 最大二叉树

654. 最大二叉树 - 力扣(LeetCode) (leetcode-cn.com)最大二叉树递归明确: 分治左闭右开原则vector使用下标代替分割优化空间class Solution {public: TreeNode* constructMaximumBinaryTree(vector<int>& nums) { return traversal(nums, 0, nums.size()); } TreeNode* tra

2021-07-21 14:03:17 57

原创 [ 二叉树 ] 中序和后序遍历确定二叉树

106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) (leetcode-cn.com)中序和后序遍历确定二叉树递归明确:分治左闭右开切割class Solution {public: TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { // 构造返回值 TreeNode* root = new TreeNode

2021-07-21 14:01:54 712

原创 [ 二叉树 ] 完全二叉树结点个数

222. 完全二叉树的节点个数 - 力扣(LeetCode) (leetcode-cn.com)完全二叉树结点个数递归(遍历法)当前树结点个数 = 左树 + 右树 + 1隐含了后序遍历class Solution {public: int countNodes(TreeNode* root) { if (!root) return 0; //先左 后右 最后中(+1) return 1 + countNodes(root-&gt

2021-07-20 18:36:04 291

原创 [ 二叉树 ] 平衡二叉树

110. 平衡二叉树 - 力扣(LeetCode) (leetcode-cn.com)平衡二叉树深度:根节点到某节点的最⻓简单路径边的条数高度:某结点到叶子的最长简单路径边的条数树的深度(最深) == 树的高度(最高),那么按深度求class Solution {public: int getDepth(TreeNode* node) { if (!node) return 0; // 如果子树不平衡,那么整体不平衡

2021-07-20 18:35:21 70

空空如也

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

TA关注的人

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