04 2020 档案
摘要:内容会持续更新,有错误的地方欢迎指正,谢谢! map和unordered_map的差别 还不知道或者搞不清unordered_map和map是什么的,请见: http://blog.csdn.net/billcyj/article/details/78065438 需要引入的头文件不同 map: #
阅读全文
摘要:给定一个正整数n,计算n与斐波那契数的最小差值(绝对值) 说明: 斐波那契数定义: 从0,1开始后面的数值为前面两者之和, 即第三个数为第一和第二个数之和 形如:0,1,1,2,3,5,8,13,21。。。。 其中3为1与2的和,5为2与3的和,8为3与5的和等等 要计算的数值案例: 输入15,与斐
阅读全文
摘要:题目描述: 思路一:递归 此类求多少种可能性的题目一般都有递推性质 ,即 f(n) 和 f(n−1)…f(1) 之间是有联系的 f(0)=1 f(1)=1 f(2)=2 f(3)=3 f(4)=5 .... 以上类似斐波那契数列,不同的是斐波那契数列f(0)=0 1 class Solution {
阅读全文
摘要:思路:递归 当前结点没有儿子结点时,最大值就是该结点的值 如果有左右子树,将当前结点node和左右子树的最大值进行比较,选出较大的一个 如果只有左(右)子树,则node的值与左(右)子树的最大值进行比较 1 #include <iostream> 2 #include <algorithm> 3 u
阅读全文
摘要:题目描述:https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row/ 思路一:DFS 定义数组maxNum[],其中下标为层数level,元素值为每层的最大值 如果当前结点是遇到的某层的第一个结点则将该结点的键值存入数组
阅读全文
摘要:题目描述:https://leetcode-cn.com/problems/validate-binary-search-tree/ 思路一:递归 根据每一个结点键值的边界进行判断,如果不超出边界则合法,然后分别递归判断左右子树的结点 宏LONG_MAX和LLONG_MAX均存在与头文件limits
阅读全文
摘要:NULL vs nullptr 在过去,我们如果要表示一个指针为空,我们条件反射肯定会这么写: int *p = NULL; 然而啊,有没有想过这是有问题的,比如下面的这段代码: #include <iostream> #include <string> using namespace std; v
阅读全文
摘要:C和C++中的结构体: 在C++中允许结构体包含函数成员,甚至允许结构体中含有构造函数、重载、public/private等等(标准C不允许)。 在C++中,结构体和类就一个区别,默认作用域不同:在class中定义的成员默认是private,在struct默认是public。 结构体的构造函数: 自
阅读全文
摘要:1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/invert-binary-tree/ 思路一:递归 将左右结点进行交换,递归的对左右节点的左右子树进行交换 判断根结点是否为空或只有一个结点 交换根结点的左右儿子 对该结点的左右子树进行交换 1 /** 2 * Defin
阅读全文
摘要:An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the
阅读全文
摘要:C++的默认初始化规则: 栈中的变量(函数体中的自动变量)和堆中的变量(动态申请的变量)会有不确定的值; 全局变量和静态变量(包括局部静态变量)会初始化为0 变量的存储: 栈:在函数内部声明的所有变量都将占用栈内存。 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。 全局区(static
阅读全文
摘要:本文主要介绍 C++ 中 stringstream 类的常见用法。 1 概述 <sstream> 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操
阅读全文
摘要:string,主要用于字符串处理 1、字符串的输入 读入和输出整个字符串,只能用cin和cout 输入一个字符串s, 如果字符串中有空格 不能用cin,要使用getline(cin,s) 其中,getline()函数定义在<string>头文件中 2、字符/字符串与数值转换(C++11) 将字符转化
阅读全文
摘要:2.6哈夫曼树和哈夫曼编码 2.6.1什么是哈夫曼树(Huffman Tree)? 带权路径长度(WPL):设有二叉树有n个叶子结点,每个叶子结点带有权值wk,从根结点到每个结点的长度为lk,则每个叶子结点的带权路径长度之和就是WPL,WPL=$\sum _{n=1}^n w_k l_k$ 最优二叉
阅读全文
摘要:1、对于数组来说是静态的,所以在创建数组的时候数组首元素的地址也就是数组的地址是确定的,所以在函数传参的时候将数组地址直接作为函数实参传入即可,因为会自动对该地址中的数据进行操作; 2、vector定义的是一个动态数组,在不断申请空间的过程中可能会改变动态数组的首元素地址也就是动态数组的地址,可以理
阅读全文
摘要:一面 自我介绍 操作系统 虚拟内存的概念 进程和线程 线程同步 如何实现线程同步 计算机网络 说一下TCP 为什么是四次挥手呢 说一个ip地址,如果第一字节是269行不行 说一下HTTP(自己讲了GET POST) 自己在项目中用过这些方法吗 百度访问一个网址是用了哪个方法 在页面上点赞用了哪些方法
阅读全文
摘要:算法思想: 在实际应用当中快速排序确实也是表现最好的排序算法。其思想是来自冒泡排序,冒泡排序是通过相邻元素的比较和交换把最小的冒泡到最顶端,而快速排序是比较和交换小数和大数,这样一来不仅把小数冒泡到上面同时也把大数沉到下面。 它采用了一种分治的策略,分治法的基本思想是:将原问题分解为若干个规模更小但
阅读全文
摘要:算法思想: 将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。 简单插入排序的时间复杂度也是O(n^2) 举例: 4,2,3,1,5 ,其中4是当前的有序表,将2插入有序表,然后逐步将后面所有元素往前插入 第一次插入:2 4 3 1 5 第二次插入:2 3 4 1
阅读全文
摘要:算法思想: 思想和冒泡排序有点类似,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。其实选择排序可以看成冒泡排序的优化,因为其目的相同,只是选择排序只有在确定了最小数的前提下才进行交换,大大减少了交换的次数。 选择排序的时间复杂度为
阅读全文
摘要:算法思想: 通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。 冒泡排序的时间复杂度为O(n^2) 冒泡排序是稳定的排序算法 举例: 4 2 3 1 5 第一趟冒泡 第一轮:2 4 3 1 5 第二轮:2 4 1 3 5 第三轮:2 1 4 3 5 第四轮:
阅读全文
摘要:一、请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示 参考回答: 功能: 1.每个摄像头都能抓拍车牌; 2.每个摄像头抓拍到的车牌能正常交给系统处理; 3.系统能够正确识别车牌; 4.系统能够将识别出的车牌上传; 5.上传至网络的车牌能够正常展示出来; 总结:有
阅读全文
摘要:一、五种测试方法 二、黑盒测试和白盒测试 三、测试的流程 需求测试 概要设计测试 详细设计测试 单元测试 集成测试 系统测试 验收测试
阅读全文
摘要:思路: 使用两个数组,a[]存储所有arr中重复的元素,另一个数组b[]下标是arr中的元素值,数组元素是对应下标值出现的次数。时间复杂度是O(n) 需要注意的是,b[]需要申请静态数组,因为如果使用动态数组相邻两个元素值差别的话会发生溢出;a[]需要时动态数组,因为元素个数不确定同时所有元素都是有
阅读全文
摘要:思路: 就是最大子列和呗,时间复杂度最佳那就是O(n),使用贪心算法。 以下是三种方法,时间复杂度递减 1 // preface.cpp : 基本概念 求最大子列和 2 #include "pch.h" 3 #include <iostream> 4 using namespace std; 5 6
阅读全文
摘要:思路: 不用开辟第三方数组的做法 可以模拟,我还没想好怎么描述。。。。 1 //num1[]空间足够 2 void Merge(int *num1, int m, int*num2, int n) { 3 int i = m-1, j = n-1; 4 while (i>=0&&j>=0) { 5
阅读全文
摘要:啥是循环链表: 循环链表是一种链式的存储结构,与单链表不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者头结点,从而构成一个环形的链。 循环链表的运算与单链表的运算基本一致,所不同的有以下几点: 在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是像单链表那样置为
阅读全文
摘要:思路(证明有环): 定义快慢指针fast和slow,fast每次前进两步,slow每次前进一步; 当fast和slow在到达链尾之前相遇的话,就证明有环(类似于在操场上跑步跑的慢的被快的套圈但总会遇到); 思路(找环结点): fast和slow相遇之后,fast不动,slow回到最初的起点,然后一步
阅读全文
摘要:分析: 其实就是p先跑然后标示出p和pre的恒定差,此后一直维持这种恒定差就能在p到最后的时候,pre能指向倒数第N个结点。 思路: 定义两个指针p、pre都指向头结点; p指针先跑,当p指针跑了N-1个节点后,pre指针再开始跑; 当p指针跑到最后时,pre所指指针就是倒数第N个节点。 1 #in
阅读全文
摘要:分析: 两条单向链表相交的唯一可能是(b),以为链表结点只有一个指针域不可能指向两个不同的结点。 手画图还是丑的,我需要学画图软件了(╯﹏╰)b 思路: 遍历两个链表分别存入栈s1和s2; 只要两个栈不空就一起出栈,遇到第一个不同的元素就是相交的结点。 1 #include <iostream> 2
阅读全文
摘要:1、工程中的“结点”可以认为是在已经连成整体的结构上所设置的特征点或标识点,它与结构原本是如何连接的,即连接的过程或细节并无直接关系。 2、“节点”是“结构各段之间相连的地方”,“节点”只是一个习惯称法,并不一定是真正的“点”,而是一个“地方”,是区域或者部位。 基于以上专业解释 在计算机网络中,网
阅读全文
摘要:管理->选项->启用数学公式 在latex编辑好公式,复制源码 在博客上粘贴源码,同时源码首尾加$ 编辑环境见 http://latex.codecogs.com/eqneditor/editor.php 使用方法见 https://www.cnblogs.com/liangjianli/p/116
阅读全文
摘要:2.5堆(Heap)的定义和性质 2.5.1堆的定义 优先队列:特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。 堆的两个特性: 结构性:用数组表示的完全二叉树 有序性:任一结点的关键字是其子树所有节点的最大值或最小值,最大堆(Max Heap),也称为
阅读全文
摘要:2.4平衡二叉树 背景:平衡二叉树首先是二叉排序树。基于二叉排序树,发现树越矮查找效率越高,进而发明了二叉平衡树 2.4.1平衡二叉树的定义 平衡因子(BF Balance factor):BF(T)=hL-hR,其中hL和hR分别为T的左、右子树的高度。 平衡二叉树(Balanced Binary
阅读全文
摘要:2.4树的应用——二叉搜索树 2.4.1二叉搜索树(Binary Search Tree)的定义与性质 也称为二叉排序树或者二叉搜索树 性质: 非空左子树的所有键值小于其根结点的键值 非空右子树的所有键值大于其根结点的键值 左、右子树都是二叉搜索树 2.4.2二叉搜索树的查找 1 typedef s
阅读全文