自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 python collections 中的 ChainMap 类

chainMap 属于Python collections 模块下的一个子类,作用是将多个字典,组织成一个字典。当查询时,会按照构造时传入的字典的顺序进行查询。

2023-07-30 22:13:39 586

原创 【链表】2023A-寻找链表的中间节点

给定一个单链表L,请编写程序输出L中间节点保存的数据。如果有两个中间节点,则输出第二个中间节点保存的数据。

2023-07-18 19:06:04 269

原创 暨南大学计算机研究生复试机试历年真题

暨南大学计算机研究生复试机试历年真题

2023-02-22 11:14:27 1674 1

原创 2020年暨南大学计算机848真题及答案

2020年暨南大学计算机848真题及答案

2022-09-28 11:19:41 2970 2

原创 2021年暨南大学计算机830真题及答案

2021年暨南大学计算机830真题及答案

2022-09-28 11:18:21 2393 2

原创 2021年暨南大学计算机848真题

2021年暨南大学计算机834真题

2022-09-28 11:17:17 1269

原创 2022年暨南大学计算机830真题

2022年暨南大学计算机830真题

2022-09-28 11:15:11 2154 1

原创 2022年暨南大学计算机848真题

2022年暨南大学计算机848真题

2022-09-28 11:13:04 3676 5

原创 什么是跳表

在有序序列中查找一个元素,使用二分法,时间复杂度是 O(logn)。如果数据是已链表的形式的存储的,链表不能通过索引获取元素,二分法就不能用了。不过可以使用跳表进行快速查找。跳表是有序链表与二分法的结合。二分法查找依赖于数组的有序与随机访问,只能在数组中实现。当数据存储在链表中的时候,只需要对链表进行改造,就可以实现类似于二分的查找算法,这种改造后的链表,叫做跳表(Skip List)。假设有一个有序链表,我们需要查找某个节点,需要逐个的遍历链表。时间复杂度是 O(n)。例如下面的链表中查找 15

2021-01-06 21:55:57 891

原创 什么是 Trie 树

Trie 树是一种多叉树的结构,每个节点保存一个字符,一条路径表示一个字符串。下图表示了字符串: him 、 her 、 cat 、 no 、 nova 构成的 Trie 树。从图中可以看出 Trie 树包含以下性质:根节点不包含字符,其他节点包含一个字符。从根节点到某一节点经过的字符连接起来构成一个字符串。如图中的 him 、 her 、 cat 、 no 、 nova。一个字符串与 Trie 树中的一条路径对应。在实现过程中,会在叶节点中设置一个标志,用来表示该节点是否是一

2020-12-27 17:37:51 251

原创 字符串查找---用16幅图从暴力一步步优化到KMP

猿六热衷于探求算法原理,知其然并知其所以然。研究了整整一周字符串匹配问题,总算搞明白了如何从暴力算法一步步优化得到KMP算法,高兴的想去打会游戏放松下。突然接到了面试官的电话。**面试官:**猿同学,看你简历上说熟悉算法,把我当成一个小白,来给我讲讲字符串查找的KMP算法。猿六:要不要开个视频,这个算法比较复杂,视频讲会好理解一些。**面试官:**我没准备摄像头。 你先给我讲讲,下次面试,再来个视频版本的。**猿六:**好的,那我就从暴力解法一步步优化到KMP。**猿六:**我先来解释一下字符串查

2020-12-17 20:46:07 237

原创 面试高频:栈--3题多动图1模板把栈讲明白

猿六今天复习完栈的相关知识,打算玩会游戏放松一下,突然接到面试官的电话,急忙跑到厕所接听。面试官:猿同学,你简历上说熟悉数据结构,说说你对栈的理解。猿六:先进后出,后进先出,就像羽毛球桶一样,桶口的羽毛球先被用,里面的羽毛球后被用。面试官:你来用数组实现下栈,功能有:进栈,出栈,求栈顶元素,判断栈是否为空。面试官:假设最多做10W次进栈出栈操作,所有操作合法。猿六:具体过程如下:初始化:数组stk保存元素,从stk[1]开始存储。top指向栈顶元素,栈为空的时候,top = 0.判断栈是否

2020-12-11 22:11:51 149

原创 Leetcode 11. 盛最多水的容器 从暴力优化到双指针,明明白白

从暴力优化到双指针,明明白白这道题的最优解法是左右双指针法。双指针法的难点在于难于想到,难以证明。接下来将一步一步地从暴力解法优化到双指针法。证明也就很简单了。暴力解法找出每一种情况,求出盛水值,最大的就是答案。i指向左挡板,从第一块到遍历倒数第二块。j指向右挡板,从倒数第一块遍历到i后面那一块。res保存最大盛水值。返回res。代码://cpp#include <iostream>#include <vector>using namespace std;

2020-12-10 22:56:51 212

原创 面试必会:双指针---6题14图一次搞懂

面试必会:双指针—6题20图一次搞懂使用双指针是降低算法复杂度的一个有效途径,有些问题的暴力解法时间复杂度是O(n^2),但使用双指针可以大幅度降低算法复杂度。如果面试者能将求解过程从暴力法优化到双指针,说明面试者的基础知识、代码能力、逻辑思维都是十分扎实的。同贪心算法一样,双指针的难点在于自己想不出、别人的理解不了、正确性难以证明。常用的双指针法有一下几类:左右指针:两个指针,相向而走,中间相遇。快慢指针:两个指针,有快有慢,同向而行。灵活运用:两个指针,灵活运用,伺机而动。

2020-12-10 21:25:46 468 1

原创 C++ RTTI,dynamic_cast,typeid,type_info类,虚函数表 看这一篇就够了

C++ RTTI,dynamic_cast,typeid 看这一篇就够了RITTI :运行时类型识别dynamic_cast运算符typeid运算符type_info类虚函数表RITTI :运行时类型识别通过运行时类型识别,程序能够使用基类的指针或者引用,来检查这些指针或者引用所值得对象的实际派生类型。RTTI可以看做系统提供给我们的一种功能。通过两个运算符体现。dynamic_cast:能够将基类的指针或者引用安全的转换为派生类的指针或者引用。typeid运算符:返回指针或者引用所指向的实际类

2020-12-09 19:50:47 1082

原创 C++ friend 友元函数,友元类,友元成员函数看这里

C++ friend 友元函数,友元类,友元成员函数看这里友元函数友元类友元成员函数友元函数友元函数:是个函数。三种访问权限:public,protected,private。把函数成为类的友元函数,函数就能访问类的所有成员(成员变量,成员函数),忽视访问权限。finend 函数定义放到类里,把函数生成成类的友元函数。class Man : public Human //表示Men是Humen的子类{private: void funcmen() const { cout <&

2020-11-26 20:14:28 744

原创 C++基类析构函数为什么一般写成纯虚函数,原因在这里

C++析构函数一般写成纯虚函数直接生成的对象,在程序结束时,会自动调用析构函数。new出来的对象,在手动释放的时候,才会调用析构函数。 Man men;//程序结束时自动调用析构函数 Man* pman = new Man(); delete pman;//delete的时候调用析构函数,如果不delete,不掉用父类指针指向子类对象的时候,构造函数先调用父类的,析构函数先调用子类的。父类指针指向子类对象,用new生成子类对象时,delete指针后,系统不会调用子类析构函数。 Human

2020-11-26 18:42:47 1320

原创 C++ 纯虚函数介绍

C++纯虚函数介绍纯虚函数是在基类中声明的虚函数,在基类中没有定义,但是要求任何派生类(子类)都要定义该虚函数自己的实现方法。基类中实现纯虚函数方法在函数原型后面加一个等于0.一旦一个类中有纯虚数,就不能生成这个类的对象。这个类就是抽象类了。抽象类不能用来生成对象,主要目的是用来统一管理子类对象。含有纯虚函数的类是抽象类,不能用来生成该类的对象,主要用于当做基类,用来生成子类。子类中必实现基类中的纯虚函数。class Human {public: //声明成纯虚函数 virtual

2020-11-25 20:36:18 1004

原创 C++多态介绍,面试高频

C++多态介绍多态性 是针对虚函数来说的。随着虚函数的的提出,面向对象编程里有一个概念多态性。多态性:体现在具有继承关系的父类和子类简。子类重新定义(重写),同事父类中把这个函数声明成了虚函数。通过父类的指针,只有到了程序运行时期,找到动态绑定到父类指针上对象,这个对象它有可能是某个子类对象,也可能是父类对象,系统内部实际上是要查一个虚函数表,找到函数的入口地址,从而调用父类或者子类的函数,这个过程就是运行时期的多态性。...

2020-11-25 20:20:06 109

原创 C++ 虚函数,override,final看这一篇

C++ 虚函数看这一篇目的是用一个指针,既能调用父类的函数,又能调用子类的函数(同名同参同返回值(返回值可以有点小差别,不是相互转换类型))。这个对象指针,它的类型必须是父类类型。父类成员函数必须声明之前加virtual,声明成虚函数,定义时不加。子类中加不加都行,最好加,方便阅读。一旦某个函数(基类)被声明成了虚函数,在所有派生类(子类)中都是虚函数,子类的虚函数与父类一样。如果父类子类形参不同,则是两个完全不同的函数,子类函数与父类函数无关。class Human {public: //声

2020-11-25 20:14:54 1315

原创 C++ 函数遮蔽看这一篇就够了

C++ 函数遮蔽子类中和父类中有同名函数(与参数无关),父类同名函数无法被访问到。如果确实需要调用父类的同名函数,有两种办法:在子类的成员函数中调用。用父类::函数名,能够强制调用父类同名成员函数。void Man::sanmenamefunc(int a) { Human::sanmenamefunc();//调用父类的 Human::sanmenamefunc(12);//调用父类的 cout << "Man::sanmenamefunc(int a)" <<

2020-11-25 18:55:59 651

原创 C++ public protected private

C++ public protected private表示访问权限一般都用public 继承父类。

2020-11-24 22:28:29 90

原创 C++派生类对象定义时调用构造函数的顺序

C++派生类对象定义时调用构造函数的顺序当定义子类对象时,会调用父类和子类的构造函数,父类的函数体和列表初始先执行,子类的函数体和列表初始化后执行。

2020-11-24 20:47:20 1073

原创 C++派生类

C++派生类派生类的概念派生类的概念类之间有一种层次关系,有父亲类,孩子类。父类(基类,超类)派生出来子类(派生类)。继承:有父亲类,有孩子类,就构成了层次关系。继承是面向对象程序设计的核心思想之一。这种继承,要先定义一个父类。父类中定义一些公用的成员变量,成员函数。通过继承父类构建新的类:子类。所以写代码是,只需要写和子类相关的东西即可。子类一般会比父类更加庞大。定义一个Human类:#pragma once#ifndef __HUMAN__#define __HUMAN__#incl

2020-11-24 20:33:51 1459

原创 面试高频:二分法,多题多图,一次讲个明白

基础算法一:二分法,你思考过这些问题吗?如何优雅的处理边界条件?一定要数据有序时才能使用二分吗?如何优雅的证明二分法的时间复杂度是O(logn)?如果这几个问题你已经完全掌握了,可以点击右上角关闭。如果想听听我的心得,请读完下面内容。1. 什么是二分法?​ 二分法(Bisection method),即一分为二的的方法。对于在区间[a,b]上连续不断且满足f(a)*f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在区间二等分,使区间两个端点逐步逼近零点,进而得到零点的近似值

2020-11-23 18:21:18 1040

原创 C++析构函数细节

C++析构函数析构函数:相当于构造函数的对立。对象在销毁的时候,会自动调用。如果我们自己不写,编译器会自动生成一个默认析构函数。默认析构函数一般为空,什么也不做。构造函数里有 new,就要自己写析构函数delete掉new的内存。如果不写,会造成内存泄漏。析构函数是类的成员函数,它的名字是~类名构成,没有返回值,不接受任何参数,不能被重载。一个类只有一个析构函数。函数重载:在同一个作用域,函数名相同,参数类型,参数数量不同。返回值不同不构成重载。Time::Time() :con(10){

2020-11-18 22:06:53 751

原创 C++ 拷贝赋值运算符

C++ 重载运算符拷贝赋值运算符重载运算符==,>,>=,<,<=,!=,+,-;++,–,+,-,cout,cin,<<和>>,=赋值运算符。两个对象进行 = = 比较,要重载 = = 运算符。重载:写一个从原函数,成员函数名 operator= =。这个成员函数体里面写一些比较逻辑。重载运算符本质上是一个函数。正式名字:operatpr关键字,接 运算符。有返回值和参数列表。有一些运算符,如果我们不自己写,系统会自动会给我们生成一个。比如入职

2020-11-18 20:57:50 622

原创 C++ 拷贝构造函数(赋值构造函数)看这一篇就够了

C++ 拷贝构造函数默认情况下,类对象的拷贝,是每个成员变量逐个拷贝。如果一个类的构造函数的第一个参数,是所属类类型的引用,如果还有其他额外参数,额外参数都有默认值。函数默认参数必须放在函数声明中。则这个构造函数就叫做拷贝构造函数。作用:会在一定的时机,被系统自动调用。Time::Time(const Time& temptime, int a) {//第一个参数一般都是const minute = 40; cout << "调用了拷贝构造函数" << endl;

2020-11-12 20:07:44 1094

原创 面试-----归并排序看这一篇就够了

面试-----归并排序看这一篇就够了归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。说人话我们有一个待排序的数组,长度为n。如果n大于1,就将它平均分成左右两部分。然后我们再看分开后的两部分数组,如果元素个数大于1,就再次均分成两部分。

2020-11-05 21:10:24 288

原创 面试-----快速排序看这一篇就够了

面试-----快速排序看这一篇就够了快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快排的思想是分治我们有一个待排序的数组,长度为n。选定一个基准,将数组分成左右两部分,左边的数小于基准,右边的数大于基准。然后我们分别看

2020-11-05 17:59:56 316

原创 C++ static类成员看这一篇就明白了

C++ static类成员看这一篇就明白了static成员static成员属于整个类的成员变量,static成员变量。特点:不属于某个对象,属于整个类。一旦在某个对象中修改了成员变量的值,在其他对象中能直接看到修改的结果。这种成员变量只有一个副本,对于这种成员变量的引用,我们有类名::成员变量名。成员函数前可以加static构成静态成员函数。属于整个类的成员函数。调用时,类名::成员函数名。如何定义成员变量(分配内存):我们一般会在某一个cpp源文件的开头定义这个静态成员变量,保证在调用任何函数

2020-11-04 20:14:09 115

原创 C++ 类this及返回自身对象的引用看这一篇就明白

C++ 类this及返回自身对象的引用看这一篇就明白this及返回自身对象的引用this及返回自身对象的引用this:调用成员函数的时候,编译器负责把对象地址传(&myTime)递给成员函数中隐藏的this形参。在系统角度来看,任何对类成员的直接访问都是被this隐式调用的。this有个const修饰符,只能用来指向已确定的那个对象,不能更改。this只能在成员函数中使用,全局函数静态函数不能使用this。在成员普通函数中,this是一个指向非const对象的const指针。(this

2020-11-04 19:13:16 7444

原创 C++ mutable看这一篇就明白

C++ 类mutable看这一篇就明白mutable:可改变的,可以mutable:可改变的,可以某些const函数内需要改变成员变量值值,但又要保持const属性,被const对象调用。故引入mutable。用mutable修饰成员变量,成员变量永远处于修改状态,即便在const成员函数中。class Time {public: int hour; int minute; mutable int second;public: void noone() const{ seco

2020-11-04 18:47:25 1991

原创 C++ 成员函数末尾的const

C++ 成员函数末尾的constC++ 成员函数末尾的constC++ 成员函数末尾的constconst:常量,在成员函数后面增加一个const。不单要在成员函数声明中增加const,也要在函数定义中增加const。作用:告诉系统,这个函数,不会修改对象里的任何成员变量的值等等。也就是说,这个成员函数,不会修改类Time的任何状态。成员函数后面加const的成员函数也称为“常量成员函数”。class Time {public: int hour; int minute; int seco

2020-11-04 18:41:38 4810 1

原创 c++ 类中inline看这一篇就够了

c++ 类中inline看这一篇就够了`在这里插入代码片`大是大非撒旦法撒旦法撒旦法撒旦法撒旦法撒旦法撒旦法盛世嫡妃撒旦法水电费水电费撒旦法撒旦法撒旦法胜多负少sd是对方水电费胜多负少地方水电费所发生的水电费水电费水电费手动水电费是对方水电费撒旦法撒旦法sd...

2020-11-04 18:21:26 2245 2

原创 c++ 类的 构造函数,explicit,初始化列表看这一篇就够了

c++ 类的 构造函数,explicit,初始化列表看这一篇就够了构造函数多个构造函数函数默认参数隐式转换和explicit构造函数初始化列表构造函数构造函数:在类中有一种特殊的成员函数,他的名字和类名相同,这个特殊的成员函数会被系统自动调用,这个成员函数叫做构造函数。因为构造函数会被系统自动调用,所以我们可以理解成构造函数的目的就是初始化类对象的数据成员。构造函数没有返回值。构造函数的特殊之处。不可以手动调用构造函数,否则编译出错。正常情况下,构造函数应该被声明为public。因为我们创建一个

2020-10-31 23:37:48 1019

原创 c++类的成员函数、对象拷贝、私有成员看这一篇就够了

c++类的成员函数、对象拷贝、私有成员看这一篇就够了一.综述:类是我们自己定义的数据类型(新类型)设计类时要考虑的角度:站在设计和实现者的角度。站在使用者的角度考虑。父类,子类;父类从子类中抽象出来。二. 类基础一个类就是一个用户自己定义的数据类型,可以把类想象成命名空间。包含一堆东一(成员函数,成员变量)一个类的构成:成员函数,成员变量。有许多特殊成员函数访问类成员的时候,如果是类的对象,我们使用 对象名.成员名 来访问。如果是指向对象的指针,我们用 指针名->成员名 来访问

2020-10-30 18:09:40 835 1

原创 c++ static_cast dynamic_cast const_cast reinterpert_cast看这一篇就够了

c++ static_cast dynamic_cast const_cast reinterpert_cast看这一篇就够了一.隐式转换,系统自动进行,不需要程序员介入。 int m = 3 + 45.6;//int->double->int.把小数部分截断。 double n = 3 + 45.6;//int->double二.显示类型转换int k = 5 % 3.2;//语法错误int k = 5 % (int)3.2;*///c语言风强制类型转换。int k =

2020-10-29 18:41:04 466 2

原创 C++动态内存分配malloc/new free/delete看这一篇就够了

C++动态内存分配malloc/new free/delete看这一篇就够了//动态内存分配问题//1.栈:一般函数内的局部变量放在这里,由编译器自动分配和释放//2.堆:程序员使用malloc/new分配,用free/delete释放。程序运行后也会回收,但程序会常年运行//3.全局/静态存储区:全局变量和静态变量static放这里。程序结束时候系统释放//4.常量存储区:"I love"//5.程序代码区:存储程序代码 //堆和栈不同的用途和区别 //1.栈:空间有限。这是系统规定

2020-10-27 22:54:09 316

原创 c++范围for看这一篇就够了

c++范围for看这一篇就够了//1.范围for语句int v[]{ 12,13,14,15 };for (auto &x : v)//数组中每个元素依次拷贝x中,用引用省略拷贝动作,提高系统运行效率{ cout << x << endl;}cout << "-----------------------" << endl;for (auto x : { 1,2,3,4,5 }){ cout << x <<

2020-10-27 22:43:56 167

MATLAB Deep Learning

深度学习资料,matlab版本。原版电子书,无水印,无笔记。

2018-10-09

空空如也

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

TA关注的人

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