自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

喜欢吃冰棍de谷利文君的博客

不卑不亢,不慌不忙

  • 博客(42)
  • 资源 (4)
  • 收藏
  • 关注

原创 【算法79】 单词搜索

题目描述:(来源于力扣79) 思路:查找的过程如下图所示,依次比较矩阵中的元素和字符串中的元素,如果存在不同的元素,就返回上一个节点,旋转一个方向角,重新匹配。//旋转方向,顺时针int direction[4][2]={{0,-1},{1,0},{0,1},{-1,0}};上面的查找过程类似于一棵树的遍历,具体实现://回溯法// 时间复杂度: O(m*n*m*n)/...

2020-03-31 11:26:16 127

原创 C/C++中单引号与双引号使用

一直使用单引号和双引号,在Python中好像没有很强的使用限定,但是看到C++中两者的使用有些不同。参考:Single quotes vs. double quotes in C or C++In C and in C++ single quotes identify a single character, while double quotes create a string liter...

2020-03-28 15:19:17 3440

原创 【C++知否】 引用和指针的区别

引用和指针的区别:1)指针有自己的一块空间,而引用只是一个别名;2)使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小;3)指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象的引用;4)作为参数传递时,指针需要被解引用才可以对对象进行操作,而直接对引用的修改都会改变引用所指向的对象;5)可以有const指针,但是没有const引用;6)指针在使用中可以指向...

2020-03-27 23:23:41 102

原创 【C++知否】 C++中static关键字的作用

static关键字的作用:1)全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态静态变量在声明它的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。2)局部静态变量在局部变量之前加上关键字sta...

2020-03-27 21:44:41 160

原创 【算法92】 反转链表ll

题目描述:(来源力扣92)反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:先说一下,这道题自己做的过程,在这道题之前做了类似的反转链表(力扣206),那道题是反转整个链表,比较简单。这里就只贴出代码了:力扣206:反转链表class Solution {public: ListNode* reverseList(Li...

2020-03-20 12:47:44 89

原创 【算法447】 回旋镖的数量

题目描述:(来源于力扣447)给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:题目中的表述有点绕,其实就是两边节点到中间节点的距离相等。这里的n最多为...

2020-03-19 14:29:12 242

原创 【算法1】 两数之和

题目描述:(来源于乐扣1)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:1 暴力解法这道题和乐扣167题( 两数之和 II - 输入有序数组)类似,区别仅在于这道题的数组不是有序的。暴力解法依然是双层遍历,然后比对计算两者...

2020-03-19 10:50:17 132

原创 【算法209】 长度最小的子数组

题目描述:(来源于力扣209)理解:1)什么叫子数组,是否需要连续?2)如果没有解怎么办?返回0?3)如果有多个解怎么办?返回所有解,解的顺序怎么样?1 暴力解法使用两层遍历,只有在和满足条件时,才会更新长度length。class Solution {public: int minSubArrayLen(int s, vector<int>& nu...

2020-03-18 18:41:05 100

原创 【算法125】 验证回文串

题目描述:(来源于leetcode125)给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。思路:1)空字符串如何看?2)字符的定义?3)大小写问题判断回文字符串,我们可以使用双指针碰撞法分别指向字符串第一个字符和最后一个字符。如果满足回文字符串的定义,就将首指针加一,尾指针减一。我的实现:c...

2020-03-18 14:51:39 122

原创 【算法167】 两数之和 II - 输入有序数组

题目描述:(来源leetcode167)给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:1 暴力解法——双层...

2020-03-18 11:01:00 114

原创 堆排序

关于堆的数据结构的讲解这里不再赘述,可以参考前面的博客:优先队列&堆堆排序的思路比较简单, 将所有的元素依次添加到堆中, 在将所有元素从堆中依次取出来, 即完成了排序。这里采用的是最大堆,那么每次取出的元素的都是序列中最大的元素,只需要将取出的元素依次存放,就可以实现排序。无论是创建堆的过程, 还是从堆中依次取出元素的过程, 时间复杂度均为O(nlogn) 。整个堆排序的整体时间...

2020-03-16 14:54:28 108

原创 快速排序

1 快速排序法通常使用第一个元素作为分界点;1)i处的元素大于v,直接添加在大于v的后面;2)i处的元素小于v,则将其和j后面一个位置的元素进行交换;3)最后,将v和j后面一个位置的元素进行交换。partition操作:int __partition(T arr[], int l, int r) {// 随机在arr[l...r]的范围中, 选择一个数值作为标定点pivot ...

2020-03-15 17:17:38 149

原创 归并排序Merge Sort

这里的层数是log(N)log(N)log(N),N为元素个数,Nlog(N)Nlog(N)Nlog(N)

2020-03-14 22:05:17 130

原创 排序基础

1 选择排序时间复杂度:O(n2)O(n^2)O(n2);唯一的好处:不占用额外的内存空间。算法步骤:1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾;3)重复第二步,直到所有元素均排序完毕。void selectionSort(T arr[],int n){ for(int i=0;...

2020-03-13 20:13:32 117

原创 线段树

线段树存储的不是区间的所有元素,而是由具体操作确定的,例如求和,那么存储的就是这个区间段的和。

2020-03-13 13:38:15 101

原创 哈希表

哈希表O(1)的查找操作哈希表充分体现了算法设计领域的思想:空间换时间键通过哈希函数得到的索引,分布越均匀越好1 哈希函数的设计1)整型小范围正整数直接使用;小范围负整数进行偏移;大整数:取模,模一个素数;下面的右侧分布就比较均匀:2)浮点型3)字符串转换成整型处理:优化一下:代码实现:4)复合类型转成整型处理:2 哈希冲突的处理——链地址法(S...

2020-03-12 21:00:55 130

原创 优先队列&堆

普通队列:先进先出;后进后出优先队列:出队顺序和入队顺序无关;和优先级相关1 优先队列所以,使用堆实现优先队列比较好。2 堆的基本结构二叉堆Binary Heap二叉堆是一棵完全二叉树;堆中某个节点的值总是不大于其父节点的值;最大堆(最小堆);1)用数组存储二叉堆从1开始存储:从0开始存储:2)节点索引计算计算父节点索引:// 返回完全二叉树的数组表示...

2020-03-12 15:18:54 139

原创 集合&映射

一、集合Set集合是一种抽象数据结构,和底层实现无关。我们可以使用动态数组、链表、二分搜索树等底层实现。1、有序集合基于搜索树实现在集合的基础上,还保持这所存储元素的顺序。在有序集合中,可以提供接口,供调用者完成下列操作:找到所存储元素的最大值(maximum),最小值(minimum),某个元素的下一个元素(succesor),上一个元素(predecessor),第k大元素(sele...

2020-03-12 10:21:45 138

原创 红黑树

《算法导论》中关于红黑树的定义:每个节点或者是红色的,或者是黑色的;根节点是黑色的;每一个叶子节点(最后的空节点)是黑色的;如果一个节点是红色的,那么他的孩子节点都是黑色的;从任意一个节点到叶子节点,经过的黑色节点是一样的。在算法4中,讲述了红黑树与2-3树的等价性,我们先理解2-3树和红黑树之间的关系。1 2-3树(绝对平衡的树)满足二分搜索树的基本性质,节点可以存...

2020-03-11 00:04:16 105

原创 【算法111】 二叉树的最小深度

题目描述:(来源于力扣111)给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最小深度 2.解法:1)深度优先搜索法首先分别计算左右子数的深度,然后分情况判断:若左子树为空,返回右子树深度;若右子树为空,返回左子树深度...

2020-03-10 15:39:36 217

原创 【算法589】 N叉树的前序遍历

题目描述:(来源于力扣589)给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。解法:1)递归实现递归实现比较简单。class Solution {public: vector<int> ret;//存储返回值 vector<int> preorder(Node* root...

2020-03-09 19:25:48 167

原创 C++ 杂记1

1 在C++种main函数前面为什么要加上数据类型,比如int、void?main函数的返回值时返回给主调进程,使主调进程得知被调用程序的运行结果。标准规范种规定main函数的返回值为int,一般约定返回0值代表程序无错误,其他值均为错误号,但该约定并非强制。如果程序的运行结果不需要返回给主调进程,或程序开发人员确认该状态并不重要,比如所有出错信息均在程序中有明确提示的情况下,可以不写mai...

2020-03-08 23:33:12 107

原创 【面试题 04.04】 检查平衡性

题目描述:(来源于力扣)实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。解题思路1)递归求解每个节点的高度,关键在于父节点和子节点的高度值之间的关系;2)计算平衡因子;3)计算平衡性,使用递归求解每一个节点的平衡因子;如果缺少最后的递归左右子树,就会导致只计算了根节点的平衡因子,其他节点的平衡因子都没有计算。代码/...

2020-03-08 13:24:42 202

原创 平衡二叉树 AVL

平衡二叉树 AVL先弄清楚几个概念:1)满二叉树:除了叶子节点,都是满的;2)完全二叉树:整体而言,空缺的节点一定是位于树的右下方;整棵树的叶子节点最大深度值和最小深度值,相差不会超过1;3)平衡二叉树:对于任意一个节点,左子树和右子树的高度差不能超过1。1 平衡因子通过平衡因子可以判断出是否为平衡二叉树,这决定了是否需要进行左旋转或右旋转操作。第一步,标注节点的高度;节点的高度=...

2020-03-07 23:21:50 709

原创 【算法107】 二叉树的层次遍历II

题目描述:(来源于力扣107)给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为:解法:1)使用队列,将每一次遍历的节点排入队列中;2)关键在于,不同层节点的划分;这里获取了队列的长度,正好等于这一层的节点数。/** * Def...

2020-03-07 14:11:38 132

原创 二分搜索树

二分搜索树1 添加元素添加元素的思路:1)判断,若树为空,则创建一个新的节点,直接使用添加的元素初始化;2)不为空,则比较添加元素与节点元素的大小,然后使用递归左(右)子树;3)递归终止条件:节点为空,创建新的节点并初始化返回。 //向以node为根的二分搜索数中插入元素e,递归算法 //返回插入新节点后二分搜索树的根 TNode<T> *add(TNode...

2020-03-06 18:51:48 156

原创 【算法57】 和为s的连续正数序列

题目分析:1)连续正整数序列;2)至少两个,也就是说并不包含自身;3)序列内数字需要有序排列,使用队列存储。

2020-03-06 09:26:57 113

原创 【算法26】 删除排序数组中的重复项

题目描述:(来源:力扣算法26)代码:自己思考时,若当前元素值大于等于下一个位置的元素值,则用后面的元素值覆盖当前元素值。提交时出错在只有一个元素的情况,预感是边界情况考虑有问题。这里贴出来,等下次再想想。在这里插入代码片主要思路:双指针法class Solution {public: int removeDuplicates(vector<int> &...

2020-03-04 19:59:50 119

原创 Linux下编译运行多个C++文件

之前一直使用集成开发环境,如VS、CLion等(CLion比较人性化,最爱它的调试功能,可以在程序中看到当前的变量值,推荐)。但是既然走C++这条路,就要了解Linux下的C++编程,所以学习了一下。在面临多个文件需要同时编译运行的情况,就需要借助makefile了。在网上看了很多博客,看了半天,终于,终于成功了!但是有好多只是列举了一些参数功能,有些讨论的过于高深,不适合我这种刚入门的小...

2020-03-03 22:50:32 3012

原创 【数据库178】 分数排名

题目描述:(来源:力扣数据库178)编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):我的解法:SELECT s3.Score, s4.rank FROM Scor...

2020-03-03 15:21:17 523

原创 vim使用

vim使用1 安装查看系统是否安装了vim,可以输入vi,然后按tab键。(可能需要按两次)查看里面是否有vim选项,vim.tiny是vim的精简版。没有vim选项就需要安装,安装命令如下:sudo apt-get install vim-gtk2 常用命令自行学习。移动光标至末尾:大写字母G;删除文本内容全部:%d;3 vim文本编辑有时候使用vim编写程序时需要代码高...

2020-03-02 21:44:25 286

原创 【数据库602】 换座位

题目描述:(来源:力扣数据库602)小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢?结果:注意:如果学生人数是奇数,则不需要改变最后一个同学的座位。我的解法:select s1.id,s1.s...

2020-03-02 15:48:42 418

原创 【蚕食C++】 C++模板

模板的使用比较频繁,所以这里总结一下,后面有新的收获会及时更新。1 模板概述模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。2 模板格式//函数模板template <class type> ret-type func-name(paramter list){ //函数的主体}//在这里,type是函数...

2020-03-02 11:20:02 85

原创 【蚕食C++】 静态联编和动态联编

1、联编是指一个程序模块、代码之间相关联的过程;2、静态联编,是程序的匹配、连接在编译阶段实现,也称为早期匹配。重载函数使用静态联编。3、动态联编,是指程序联编推迟到运行时进行,所以又称为晚期联编(迟绑定)。switch语句和if语句是动态联编的例子。4、C++与C相同,是静态编译型语言。5、在编译时,编译器自动根据指针的类型判断指向的是一个什么样的对象;所以编译器认为父类指针指向的是...

2020-03-02 10:53:38 181

原创 【蚕食C++】 重写、重载、重定义

1、重载一定是同一个作用域下;如果是在全局下,写了两个函数,就不是重载。2、重定义发生在两个不同的类中,一个是子类,一个是父类。3、重写虚函数重写;父类是一个虚函数。归结:1)普通函数重定义。如果父类的普通成员函数,被子类重写,说是重定义。2)虚函数重写。如果父类的虚函数,被子类重写,就是虚函数重写,这个函数会发生多态。...

2020-03-02 10:51:42 223

原创 【C++知否】 const关键字

【注意】:

2020-03-02 10:47:45 111

原创 【C++知否】 继承和派生

1 继承与派生//情况一://类B拥有类A的成员变量,B has A,类B 依赖于 类Aclass B{public: void funcB(){ } A a;};//情况二://类C 的成员方法 需要类A的形参, C use A,类C 依赖于 类Aclass C{public: void funC(A *a){ }}//情况三://D继承于A 类D 如果...

2020-03-02 10:42:32 135

原创 【C++知否】 友元函数

1 友元采用类的机制后实现了数据的隐藏于封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是有时候需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类地数据成员,这时候可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等需要时间开销),但它破坏...

2020-03-02 10:39:26 182

原创 【C++知否】 this指针

2020-03-02 10:32:29 110

原创 【C++知否】 malloc与new的区别

1 malloc与new的区别?2 static静态成员

2020-03-02 10:30:12 119

libmysql.dll(MySQL 32位)

该共享库文件是MySQL的32位,使用前注意是否位数相同。

2019-07-24

00 ManageOne ServiceCenter 3.0.8 租户指南 03.pdf

网络架构,网络精英挑战赛。

2019-05-17

无线传输NRF24L01程序

NRF24L01无线通信,经过发送使用stm32f103rbt6,接收方使用stm32f103zet6,成功通车;测试的数据使用采集到的温度数据,同时由从机与上位机通信,绘制温度曲线,上位机使用labview。

2018-11-06

上大初始电路真题

上海大学电路初试真题 15年到17年,回忆版,仅供参考!!!

2018-11-01

空空如也

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

TA关注的人

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