Day107 | 147.对链表进行插入排序 | 简单选择、冒泡、直接插入
Day107 | 147.对链表进行插入排序 | 简单选择、冒泡、直接插入147. 对链表进行插入排序 -...
26考研 | 王道 | 计算机网络 | 第二章 物理层
26考研 | 王道 | 第二章...
26考研 | 王道 | 计算机网络 | 第三章 数据链路层
26考研 | 王道 | 第三章 数据链路层数据链路层所处的地位 数据链路层 使用 物理层 提供的“比特传输”服务 数据链路层 为 网络层 提供服务,将网络层的 IP数据报(分组)封装成帧,传输给下一个相邻结点 物理链路:传输介质(0层)+ 物理层(1层)实现了相邻结点之间的“物理链路” 逻辑链路:数据链路层需要基于“物理链路”,实现相邻结点之间逻辑上无差错的“数据链路(逻辑链路)” 1.数据链路层的功能 流量控制实际上是控制发送方的数据流量,让发送方发的慢一点 为了避免传输过程中的帧丢失,数据链路层采用的方法是计时器超时重发 为终端节点隐蔽物理传输的细节的是物理层而不是数据链路层的事情 数据链路层也会控制对物理传输介质的访问 2.封装成帧(组帧) 1.概念定义:封装成帧是指在一段数据的前后分别添加首部和尾部来构成帧,帧是数据链路层的数据传送单元。 帧长 = 数据长度 + 首部长度 + 尾部长度...
Day106 | 灵神 | 二叉树 二叉树中的最长交错路径
Day106 | 灵神 | 二叉树 二叉树中的最长交错路径1372.二叉树中的最长交错路径1372. 二叉树中的最长交错路径 - 力扣(LeetCode) 笔者题解思路: 这道题挺难想的,笔者第一次写,没写出来,原因是情况少了,只考虑可以往左的时候往左和可以往右走的时候往右,少了不可以往左的时候往左和不可以往右的时候往右走 所以就是分四种情况,同时我们使用一个bool值flag记录上一次我们是从左边来的还是从右边来的,同时使用len记录路径长度,dfs含义就是深度搜索,但是要在搜索过程中记录最大值 规定flag为0,表示可以往左走,不可以往右走,表示我们上次走的右子树到达了本节点 flag为1,表示可以往右走,不可以往左走,表示我们上次走的左子树到达了本节点 1void dfs(TreeNode *t,bool flag,int...
26考研 | 王道 | 计算机网络 | 第一章 计算机网络的体系结构
26考研 | 王道 | 第一章 计算机网络的体系结构1.1 计算机网络概述1.计算机网络的概念 **计算机网络(Computer networking)**是一个将众多分散的、自治的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 自治的:如果一台设备坏掉,不会影响另外一台设备的运行。 通信设备:家用路由器、5G基站。 线路:WiFi——无线线路;网线——有线线路。 软件:百度网盘——资源共享;微信——信息传递。 计算机网络、互连网、互联网的区别 计算机网络(简称 网络):由若干结点(node)和连接这些结点的链路(link)组成。 两个或者两个以上的计算机相互连接起来就是互连网。把全球的计算机都连接起来组成的更大的互连网就是互联网 结点可以是计算机、集线器、交换机、路由器等; ...
刷题总结 | C++中对map的value进行排序的方法总结
C++中对map的value进行排序的方法总结在C++中,std::map默认基于键(Key)排序,若需按值(Value)排序,需借助间接方法。 一、Vector转换法(最通用)原理:将map的键值对拷贝到vector中,利用std::sort结合Lambda表达式按值排序。步骤: 将map转为vector<pair<Key, Value>> 使用自定义比较器对vector排序 遍历排序后的vector获取结果 代码示例: 123456789101112std::map<std::string, int> myMap = {{"apple", 5}, {"banana", 3}};std::vector<std::pair<std::string, int>> vec(myMap.begin(), myMap.end());// 按值降序排序std::sort(vec.begin(), vec.end(),...
Day105 | 灵神 | 二叉树 出现次数最多的子树元素和
Day105 | 灵神 | 二叉树 出现次数最多的子树元素和1026.节点与其祖先之间的最大差值1026. 节点与其祖先之间的最大差值 -...
Day104 | 灵神 | 二叉树 出现次数最多的子树元素和
Day104 | 灵神 | 二叉树 出现次数最多的子树元素和508.出现次数最多的子树元素和508. 出现次数最多的子树元素和 - 力扣(LeetCode) 思路: 思路就是遍历一遍二叉树然后用map给它的频率都记录下来,再对频率排序,把最大的输出到一个vector里面返回就是了 注意:C++的map不能直接对sort使用lambda实现对value的排序,需要先把map转化为vector<pair>才可以 完整代码: 123456789101112131415161718192021222324252627282930class Solution {public: map<int,int> q; int maxCnt=0; //记录频率 int tra(TreeNode *t) { if(t==nullptr) return 0; int sum=tra(t->left)+tra(t->right)+t->val; ...
Day103 | 灵神 | 二叉树 计算布尔二叉树的值
Day103 | 灵神 | 二叉树 计算布尔二叉树的值2331.计算布尔二叉树的值2331. 计算布尔二叉树的值 - 力扣(LeetCode) 思路: 本题思路很直接,就是直接写,分情况讨论就好 完整代码: 1234567891011121314151617181920212223242526class Solution {public: bool evaluateTree(TreeNode* root) { if(root==nullptr) return false; else if(root->left==nullptr) return root->val; else if(root->val==2) return evaluateTree(root->left)||evaluateTree(root->right); else return...
Day102 | 灵神 | 二叉树 合并二叉树
Day102 | 灵神 | 二叉树 合并二叉树617.合并二叉树617. 合并二叉树 - 力扣(LeetCode) 思路: 就是新建一个结点,然后找到左右子树给接上去把该节点返回就是了 接子树的时候有下面几种情况 1.如果root1当前结点不为空,而root2为空的话,那就返回root1作为上层递归函数的结点t的左子树或者右子树 2.如果root2当前结点不为空,而root1为空的话,那就返回root2作为上层递归函数的结点t的左子树或者右子树 3.如果root1当前结点为空,而root2也为空的话,那就返回nullptr 4.如果root1当前结点不为空,而root2也不为空的话,那就把这两个结点的val相加作为当前结点t的val然后返回即可 完整代码: 12345678910111213141516171819202122232425262728293031class Solution {public: TreeNode* tra(TreeNode *t1,TreeNode *t2,TreeNode *t) { ...













