自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线性代数的本质——行列式

1、行列式的几何意义:矩阵所对应的线性变换改变面积(体积)的比例。通常以基向量组构成的矩阵为研究对象。如二维下,基向量y(0,1)和x(1,0)构成了单位矩阵面积为1.进行线性变换,变换矩阵为[3,2;0,2],即变换后x轴单位向量(1,0)变换到(3,0),y轴单位向量变换到(2,2),变换后面积为6,是原面积的6倍。(注:在变换后的空间中,这是一个被均匀放大倾斜的空间,单位向量组成的图像不再...

2019-11-25 17:06:54 2486 4

原创 线性代数的本质——矩阵

1、线性代数的两种认知数值层面:这是大部分课程中的教学内容,能解决计算、应用问题。但却不是最本质的内容,它是在给定法则下的运算。几何层面:这个角度的线性代数可能更为接近本质,能帮助我们更好的认识线性代数这个工具,更好的使用它,知道为什么用,用什么,而不是单纯的如何计算。2、什么是向量?数值角度:它是一个有序的数值序列。几何角度:它是空间中的一个带有指向的“箭头”,存在方向和长度。以上...

2019-11-24 10:53:56 803

原创 2020烽火通信笔试面试经验

其实在国庆之前就已经结束了烽火通信的全部笔试面试,但是那段时间实在太忙,加上国庆回家待了几天,竟把这事儿搁一边儿了。今天回到学校了,总感觉这件事一直耽搁着,心理不踏实,所以写个笔试面试经验,留作回忆吧,心想如果能帮助到部分人就更加值得去做了。首先打个广告,烽火通信在武汉其实是家很知名的企业,在武汉读本科的时候就知道这家公司了。然而由于近些年互联网企业的冲击,加上烽火通信的宣传力度不是很大,所以近...

2019-10-06 09:53:57 18116 2

原创 C/C++程序员面试宝典(五)

线程和进程1、线程和进程的区别:a.线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;b.一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;c.进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;d.调度和切换:线程上下文切换比进程上下文切换要快得多。...

2019-09-19 10:26:57 1091

原创 整数中1出现的次数(从1到n整数中1出现的次数)

题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。自己的思路第一思路就是通过遍历所有数,然后对每个数求对10的余数和商,来判断...

2019-09-18 10:12:53 106

原创 C/C++程序员面试宝典(四)

排序1、冒泡排序a.先把你要排的数输入到数组里b.进行n-1次冒泡排序,从左往右两两比较c.如果这个数比前面的大,那么就交换d.依次输出数组#include <iostream>using namespace std;int a[100];int main(){ int n; cin >> n; for (int i = 0;i ...

2019-09-16 22:20:00 244

原创 C/C++程序员面试宝典(三)

表1、线性表的实现方式:顺序实现:用一组地址连续的存储单元依次存储线性表的数据元素。(需要预先分配表的大小,适用于随机存取元素)链表实现:用一组任意的存储单元存储线性表的数据元素。(需要存储额外的信息以实现表的逻辑关系,适用于随机插入或删除元素)2、链表:单链表、双向链表、循环链表队列3、顺序队列判断是否已满:bool isFull = ((rear+1)%MaxSize == fr...

2019-09-16 20:39:59 301

原创 C/C++程序员面试宝典(二)

面向对象基础知识1、面向对象3个要素:封装、继承、多态。面向对象中所有的对象都可以归属为一个类。类成员2、成员变量的访问方式:private:可以被该类的方法和友元函数访问,但不能被该类的对象访问。protected:可以被该类的方法、友元函数及子类的函数访问,但不能被该类的对象访问。public:可以被该类的方法、友元函数及子类的函数访问,也能被该类的对象访问。多态3、动态多态:...

2019-09-15 20:01:03 249

原创 C/C++程序员面试宝典(一)

基本数据类型1、基础数据类型分为3中:整数型、浮点型和void型。(任何表达式都是可转换为void类型的)2、整型:表示整数、字符和布尔值的算术类型。3、绝对值小于1的浮点数,其小数点前面的0可以省略,例如,0.22可写为.22。4、常量:整型常量、浮点型常量、字符型常量、字符串常量、转义字符常量(\)、地址常量(&)5、常量是不可以改变的值,变量是可以改变值的量;常量在定义时...

2019-09-14 20:42:02 1501

原创 字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。自己的思路通过swap字符串中每一位,将swap后的字符串存入vector中,关键就是如何求出所有可能的字符串,先把自己错误代码...

2019-09-13 21:03:03 120

原创 二叉树中和为某一值的路径

题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x)...

2019-09-12 17:05:01 78

原创 二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。自己的思路通过查了下,二叉搜索树满足左子树的值比根节点值小,右子树的值比根节点值大。于是就想通过不断的寻找根节点的方法去判断,然后去判断是不是满足前面的规则,但是想起来容易,实现起来就难了,所以说还是写得太少,要经常总结,吸取教训,避免下次犯同样的...

2019-09-12 15:31:36 126

原创 c++ 分割字符串的用法总结

c++不像Java语言有专门分割字符串的关键字split,所以处理起来并不容易(至少是对初学者的我来说是这样的),赶上今天某讯飞的笔试题碰到了,所以在这里做个总结吧。1、getline关键字虽然c++没有专门分割字符串的函数,但是有getline方法(位于string类中),就可以应对分割字符串的问题了,getline函数的参数有两种:istream& getline(istream...

2019-09-12 13:46:39 746

原创 从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};自己的思路由于之前面试被问过一次,只是让说一下思路,...

2019-09-11 22:14:35 118

原创 c++ const与#define的用法总结

1、consta.可以用来定义常量、修饰函数参数、修饰函数返回值等三个作用。(编译阶段)b.被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。2、#define#define是一个宏定义,可以定义一个全局变量,在整个文件中都可以使用。(预编译阶段)3、二者的区别a. const有类型,define无类型(最重要的)define只是在预处理阶段做个简单的替换...

2019-09-11 17:19:36 342

原创 栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)自己的思路自以为对栈很了解,其实仔细深入才发现自己不会,到了代码层面就不会弄了,就比...

2019-09-11 16:27:46 75

原创 包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。自己的思路由于考虑到时间复杂度要为O(1),所以就需要能直接取出最小值,试想,如果栈顶元素就是最小值时,就可以解决这个问题了,于是考虑使用两个栈,一个是最开始的入栈Stack1,不做处理,另一个栈Stack2每次通过比较,将第一个栈的最小值不断地压栈,最后将栈顶出栈就好了,但是可能是...

2019-09-11 12:02:55 70

原创 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。自己的思路由于对二维数组没啥印象,所以处理起来有点费劲,调了很久也没出来,其实是自己以前做过的,没有总结,导致一时没...

2019-09-10 22:05:07 101

原创 二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};输入描述自己的思路首先找到二叉树的根,然后将二叉树的左右子...

2019-09-10 20:27:27 74

原创 树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};自己的思路可能还...

2019-09-10 14:20:12 98

原创 合并两个排序的链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};自己的思路思路其实很简单,首先是两个单调递增的链表,合并后的链表单调不减,所以考虑新建一个...

2019-09-10 10:57:07 88

原创 反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。自己的思路由于是之前面试问过的题目,所以看到就有了思路,而且自己当时是说了用两个指针,应该用3个指针,所以印象很深,就直接理解图和代码吧,应该是很好理解的,就是里面的循环次数需要注意,最后一次是head变成nullptr了,循环终止,其它的好像没什么了。(可以想象成3个指针在移动,第一个指针是最后要求的表头)class Solut...

2019-09-09 21:30:40 100

原创 链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};自己的思路由于之前在网上看过这道题,是用两个指针进行求解的,所以自己也是第一时间想到用两个指针来做,但是提交代码的时候,出现了数组越界,堆栈...

2019-09-09 18:09:59 72

原创 调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。自己的思路由于剑指offer原题是不用考虑相对位置不变,所以只需要两个指针pbegin和pend,交换偶数和奇数,不断往中间靠即可。但是这里要保证奇数和奇数,偶数和偶数之间的相对位置不变,所以第一感觉就是从新定义一个新...

2019-09-09 11:56:25 141

原创 c++ map的用法总结

1、map的定义map是STL的一个关联容器,通过key-value的形式处理数据(一对一),由于这个特性,它可以在我们处理一对一数据的时候,在编程上提供快速通道。2、map的特点a.头文件#include <map>b.map的内部结构是红黑树c.key定义后不可修改,value可以修改,元素是自动按照键key进行排序(即使插入一个新的pair也会从新排序,在遍历时按照...

2019-09-09 10:32:56 202

原创 数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0自己的思路因为是求次方嘛,所以第一次思考的是直接for循环,通过每次*=base,求出结果,但是最后出问题了,因为这个exponent可以是负数,就需要*=(1/base),求出相应的解,可能方法不是最好的,不过也a了,代码先贴出来,...

2019-09-08 16:38:53 114

原创 二进制中1的个数

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。自己的思路由于前不久已经做过这道题了,脑子里还记得很清楚,所以毫不犹豫的把代码敲了出来,结果也是完美的。思路就是将这个数减1,再跟这个数做与操作,这样就可以将这个数最右边的1置为0。但是为了以后能复习得更轻松些,或者说是遇到了问题能更好的发现,我还是决定把常规思维的解题方法也总结一下。class Solution {...

2019-09-08 12:11:34 113

原创 c++ struct和class的用法总结

由于自己是直接系统学习的c++,所以对struct的用法还是很模糊,感觉它就是不如class,但是具体有哪些不同,除了知道默认访问权限不同,就不知道别的,所以还是有必要总结一番。1、c和c++中struct的区别c中的struct没有成员函数,而c++中的struct是对c中的struct进行了扩充,所以增加了很多功能,可以说跟class已经有很多相似之处。且在c中使用结构体时需要加上stru...

2019-09-07 22:35:46 2245 1

原创 矩阵覆盖

题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?自己的思路也是根据自己去计算了n=1,2,3,4的情况,可以发现是一个斐波那契数列的问题,采用for循环代替递归的方法,减少了时间复杂度,可以很快的a掉这道题,不过其中需要注意的是,要判断输入数字为0的情况,所以将result赋值为number,为0时就直接返回...

2019-09-07 21:18:41 85

原创 变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。自己的思路由于这组数字计算的结果不是很小,因此准备靠自己的猜想去计算,当然,当试了5组数据后,会发现确实是这个,当然最好是能证明出来,不然出错了都不知道在哪里,反正结果也是可以a的class Solution {public: int jumpFloorII(in...

2019-09-07 20:30:20 93

原创 跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。自己的思路斐波就斐波,别给我整什么青蛙,好了,还是按照上一次写的斐波那契数列的大佬的思路,模仿了它的写法,从下往上进行计算,也是没有去用递归,而是用的for循环,可以几乎不用修改什么代码可以解出这道题,当然能a掉,代码贴出来吧。class Solution {pu...

2019-09-07 14:17:31 406

原创 斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39自己的思路感觉这就是考一个普通的递归了,加上斐波那契数列,很自然就写出代码,没有多加任何思考,但是代码a不了,其实应该多考虑下复杂度,这也是今后想做一名好的程序员该有的思考,还是先把问题代码贴上来吧class Solution {public: int F...

2019-09-07 13:47:28 113

原创 c++ 指针和引用的用法总结

1、指针指针是一个变量,只不过这个变量存储的是一个地址,它指向内存的一个存储单元。int a=1;int *p=&a; //p是一个指针变量,指向a的存储单元2、引用引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。int a=1;int &b=a; //b是整型变量a的一个引用,事实上a和b是同一个东西,在内存占有同一个存储单元。3、二者的区别...

2019-09-07 10:42:32 247

原创 旋转数字的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。自己的思路拿到题目,第一眼看上去就感觉怪怪的,这不就是一个求数组的最小值吗,直接遍历,O(n)走起,那这跟数组的...

2019-09-06 20:46:52 158

原创 用两个栈实现队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。自己的思路思路应该都能想得到,就是想将所有的数压入一个栈,再全部出栈并压入另一个栈,再出栈,次时就是先进先出的顺序了。但是实现起来貌似并不容易,需要判断是不是栈中最后一个元素,以及什么时候开始压入另一个栈,可能还是自己对栈这个数据结构不够熟悉吧,感觉自己写对了,但是提交后就是错误的,还是先上代码吧c...

2019-09-06 16:23:23 107

原创 malloc、free和new、delete的用法总结

mallo和new的用法也是经常容易被混淆,很多人只知道一个是c语言里的,一个是c++里的,一知半解吧,或万一真被面试官问到,就真的悔不当初了,那咱就做一个总结吧,也不深究太底层,就是为了把它们的大致用处和基本原理理清楚一遍。1、malloc和free函数malloc中文叫做动态内存分配,如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。(类型 *)malloc(int s...

2019-09-06 15:16:03 350

原创 c++ 虚函数、纯虚函数、析构函数及虚析构函数的用法总结

最近也是被这几个虚函数和析构函数搞得有点糊,做个总结吧,千万别被问,问就是背诵一遍。1、虚函数与纯虚函数虚函数的主要作用是建立抽象模型,从而可以达到方便扩展系统的目的。纯虚函数是是一种特殊的虚函数,可以说是虚函数的子集,它可以不需要再基类中写函数实现,而虚函数不写函数实现就会报错。 为啥会有虚函数?为了方便实用多态,编程者常常需要在基类中定义虚函数。在很多情况下,基类本身生成对象是不合情理...

2019-09-05 22:47:50 663

原创 重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。struct TreeNode { int val; TreeNode *left; TreeNode *right; Tre...

2019-09-05 17:09:01 74

原创 从尾到头打印链表

题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};自己的思路首先去建立这个链表,再将链表入栈,再出栈,即完成逆序...

2019-09-05 10:32:44 64

原创 c++ static关键字用法总结

也是因为在最近的面试中,几乎每次必问static关键字的用法,但是总会说漏一点,因为自己平时写代码貌似用得也不多(菜鸡嘛,可以理解)。要想答得完美,还是得总结一下,共有五种用法,下次就直接背给面试官听咯,不不不,得理解,用代码说服之。1、修饰局部变量位于静态存储区,作用域为局部,但有点类似全局变量了,即赋值一次后,就会一直保存这个值,然后可以进行常规的运算,虽不能在局部作用域外对他访问,但仍然...

2019-09-04 21:14:09 152

空空如也

空空如也

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

TA关注的人

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