26考研 | 王道 | 计算机网络 | 第二章 物理层
26考研 | 王道 | 第二章...
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) { ...
26考研 | 王道 | 数据结构 | 数据结构笔记博客总结
26考研 | 王道 | 数据结构笔记博客总结笔者博客网站 分类: 数据结构 | Darlingの妙妙屋 26考研 | 王道 | 数据结构 | 第一章 数据结构绪论 | Darlingの妙妙屋 26考研 | 王道 | 数据结构 | 第二章 线性表 | Darlingの妙妙屋 26考研 | 王道 | 数据结构 | 第三章 栈和队列 | Darlingの妙妙屋 26考研 | 王道 | 数据结构 | 第四章 串 | Darlingの妙妙屋 26考研 | 王道 | 数据结构 | 第五章 树 | Darlingの妙妙屋 26考研 | 王道 | 数据结构 | 第六章 图 | Darlingの妙妙屋 26考研 | 王道 | 数据结构 | 第七章 查找 | Darlingの妙妙屋 26考研 | 王道 | 数据结构 | 第八章 排序 | Darlingの妙妙屋 CSDN链接 26考研 | 王道 | 数据结构 | 第一章 数据结构绪论_数据结构 王道计算机教育-CSDN博客 26考研 | 王道 |数据结构 | 第二章 线性表-CSDN博客 26考研 | 王道 | 数据结构 | 第三章...
26考研 | 王道 | 数据结构 | 第八章 排序
第八章 排序8.0 关于链表能用于链表的: 直接插入排序,冒泡排序,简单选择排序,归并排序 相关题目: 147. 对链表进行插入排序 - 力扣(LeetCode) 148. 排序链表 - 力扣(LeetCode) 148正解是归并排序,但是可以测试写的冒泡直接插入和简单选择排序是否正确 笔者题解: 8.1 排序的基本概念 排序算法的评价指标:时间复杂度、空间复杂度、稳定性 8.2 插入排序 8.2.1 直接插入排序 算法思想:每次将一个待排序的记录按其关键字大小,插入到前面已经排好序的子序列中,直到全部记录插入完成。 该算法是稳定的 代码实现(不带哨兵): 123456789101112// 对A[]数组中共n个元素进行插入排序void InsertSort(int A[],int n){ int i,j,temp; for(i=1; i<n; i++){ if(A[i]<A[i-1]){ //如果A[i]关键字小于前驱 temp=A[i]; ...