- 博客(73)
- 收藏
- 关注
原创 Latex输入公式
Latex 下输入希腊字母表:\alpha产生字符α;\beta产生字符β;\gamma产生字符γ;\delta产生字符δ;\epsilon产生字符ε; \zeta产生字符ζ;\eta产生字符η;\theta产生字符9; \iota产生字符ιt;\kappa产生字符κ;\1ambda产生字符λ;\mu产生字符μ;\xi产生字符ξ:\nu产生字符ν;\o产生字符o; \pi产生字符π;\ rho产生字符ρ;\sigma产生字符σ;\tau产生字符?;\upsilon产生字符υ;\phi产生字符Φ;\chi
2020-11-26 21:33:08
1916
原创 C++ 部分学习记录
简单的记录一下部分C++学习的容易忽略的点(1) 如果类的成员函数不改变类的值,只是简单获取。那么尽量要添加const 如上图所示,在函数申明的() 后面添加const ,理由如下,如果使用者用const 修饰了这个类的对象,那么这些没有添加了const的函数是没有办法使用的。(2)类的初始化,尽量使用初始化列表来初始化,效率更高。在《深度探索C++ 对象模型》里面将了有四种情况必须用初始化列表来初始化,初始化一个reference menber 的时候 初始化一个...
2020-10-13 11:33:28
240
原创 构造函数的显示调用
之前写代码写了一个非常愚蠢的错误,在一个构造函数里面显示的调用了另外一个构造函数。可以先简单的上个例子:#include <iostream> class CTest { public: CTest() { m_a = 1; } CTest(int b) { m_b = b; CTest(); } ~CTest()
2020-10-13 10:53:04
1059
转载 mutex和semaphore的区别
mutex,一句话:保护共享资源。 典型的例子就是买票: 票是共享资源,现在有两个线程同时过来买票。如果你不用mutex在线程里把票锁住,那么就可能出现“把同一张票卖给两个不同的人(线程)”的情况semaphore的主要用途,一句话:调度线程。保证资源的顺序执行。作者:二律背反链接:https://www.zhihu.com/question/47704079/answer/135859188来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。有...
2020-09-16 16:54:13
914
转载 内存泄漏和检测方式
内存泄漏和后果 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。最难捉摸也最难检测到的错误之一是内存泄漏,即未能正确释放以前分配的内存的 bug。 只发生一次的小的内存泄漏可能不会被注意,但泄漏大量内存的程序或泄漏日益增多的程序可能会表现出各种征兆:从性能不良(并且逐渐降低)到内存完全用尽。 更糟的是,泄漏的程序可能会...
2020-09-16 15:30:15
413
原创 Qt的slot和singnal的本质
Qt的slot的signal是一种对象之间的通信方式,在讲这个之前,要讲一下Qt的元对象系统Qt的元对象系统 Meta Object SystemQt的元对象系统 Meta Object System 主要是分成这个几个部分(1)所有的类都是QObject的的子类(2)Q_OBJECT的宏定义会激活元对象的功能,例如说信号和槽(3)如果定义了 Q_OBJECT 宏定义,会让moc编辑器自动生成一些代码和类来支持元对象的功能。至少是让该类产生了这么几个数据 static..
2020-09-10 22:58:05
1155
1
原创 浅谈sizeof 操作符
sizeof 是一个操作符,主要是作用是返回对象或者类型所占用的内存字节数量。用法:sizeof(object) sizeof(type_name) sizeof object sizeof 计算对象的大小主要是转换为对象所在的类型进行计算的。也就说同种类型对象的sizeof值都是一样的。这里的对象可以延伸到表达式,也就说说sizeof可以对表达式进行求值,编译器根据最终的计算结果类型来计算大小。sizeof是编译时进行计算的,和运行无关,不会对表达式进行计算:#include &l..
2020-09-03 21:46:33
219
转载 C++ 里面的new/delete 和 new[]/delete[]
在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候用它们? 你知道 operator new 和 operator delete 吗? 为什么 new [] 出来的数组有时可以用 delete 释放有时又不行? …如果你对这些问题都有疑问的话,不妨看看我这篇文章。new 和 delete 到底是什么?如果找工作的同学看一些面试的书,我相信都
2020-09-02 21:29:09
166
原创 波兰表达式和逆波兰表达式
题目:根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例2:输入: ["4", "13", "5", "/", "+"...
2020-08-31 11:19:48
406
原创 怎么用队列模拟堆栈
记得之前做过这个题目,但是后来忘记了。这次特意的mark一下。(1)怎么用两个队列去模拟一个堆栈 如下图所示,我们有两个队列。每个时刻总有一个队列是空的,每次新插入的数据,就存放到空的队列里面,然后将另外一个队列里面是所有的数据依次出栈,然后压入到刚刚存放的队列。这样就ok了。(2)怎么用一个队列去模拟一个堆栈 如果是一个队列的话,也是可以的,思路是一样的。只不过是每次新压入一个数据,这个数据前面的所有的数据都要先出队列,然后再进队列,让刚刚新添加的数...
2020-08-30 17:39:02
437
原创 二分查找的简单变形 LeetCode 33
题目: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别例如:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4输入: nums = [4,5,6,7,0,1,2], targe...
2020-08-30 17:00:28
144
原创 最长有效括号 LeetCode 32
题目: 给定一个只包含'('和')'的字符串,找出最长的包含有效括号的子串的长度。输入: "(()"输出: 2解释: 最长有效括号子串为 "()"输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"方法:1 思路: 以后再写吧~!class Solution {public: int longestValidParentheses(string s) { int SizeOfString=s.size(); ...
2020-08-30 15:46:30
133
转载 生成字典序的下一个 LeetCode 31
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3→1,3,23,2,1→1,2,31,1,5→1,5,1代码思路:如何得到比目前的序列要大一号的顺序?1 我们希望得到下一个的数比当前的要大一号,那么需要将后面...
2020-08-30 14:23:32
196
转载 C++ vector swap()去除多余容量
今天在查询swap()函数的时候,发现了swap()函数居然可以用来减少vector容器的大小,众所周知,vector的容器的大小只可以增加,不可以减少。当我们使用push_back(),insert(),emplace()等成员方法的时候,有可能会增加容量,但是我们使用pop_back()、erase()、clear() 等方式的时候,并不会减少实际 的内存容量。只是可以删除容器里面的内容。#include <iostream>#include <vector&g...
2020-08-30 12:55:15
2387
原创 盛最多水的容器 LeetCode 11
题目: 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。实例:输入:[1,8,6,2,5,4,8,3,7]输出:49方式1:非常的简单,从第二个数开始,依次计算和前面的相比。class Solution {pub...
2020-08-28 17:31:15
113
原创 求四边形的体积
如果给你一个任意的四边形,四个边长为a,b,c,d那么其面积为.如下的公式: 其中,p为: 具体的证明就是高中还是初中的事情了,这个公式也是是圆内接四边形的面积公式。大概的思路是 变成两个三角形。用三角形的公式替换。具体的题目: 给定大小为n的整数集合A,代表n根木棍的长度。从A中任选4根木棍组成一个四边形,求其面积最大为多少。数据保证有解。程序返回结果与正确答案的误差应小于0.00001输入:[1,2,3,4,5]...
2020-08-20 15:19:58
1606
原创 一样的水桶问题
题目: 有n个水桶,第i个水桶里面水的体积为Ai,你可以用1秒时间向一个桶里添加1体积的水。有q次询问,每次询问一个整数pi,你需要求出使其中pi个桶中水的体积相同所花费的最少时间。对于一次询问如果有多种方案,则采用使最终pi个桶中水的体积最小的方案。例如:输入:4,3,[1,2,3,4],[2,2,4]输出:[1,0,5]说明:第一次:花费一秒变为 2 2 3 4第二次:已经存在两个水的体积一样的桶第三次:花费五秒从2 2 3 4变为4 4 4 4代码:...
2020-08-20 14:25:45
550
原创 对称二叉树或者是镜像二叉树
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3算法:(1)采用广度优先的方式一个queue将二叉树的每一层的数据从左往右存储,另外一个queue将二叉树从右往左存储,然后判断每个数据是否相等...
2020-08-17 19:50:43
229
原创 华为硬件笔试部分题目
1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分) A.正确B.错误 FLASH可保存 上电后不知道是啥2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分) A.正确 B.错误3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分) A.正确B.错误交换机的每个端口都是一个冲突区域4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。...
2020-08-16 21:56:13
25482
9
原创 接雨水
给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6(1)找到最大的位置,然后进行左右移动。 在找到最大的高度之前,设置一个左边的围栏,左边的一定可以找到比左边围栏高的围栏,所以,只要碰到比自己低的就,记录一下水的深度,一直到比自己高的为止,然后重新记录左边的围栏。一直到最高的位置为止。 右边也是可以这样的。 一直到最高的围栏为止。class ...
2020-07-31 23:39:22
193
1
原创 字典序的第K小数字
题目: 给定整数n和k,找到1到n中字典序第k小的数字。注意:1 ≤ k ≤ n ≤ 109。示例 :输入:n: 13 k: 2输出:10解释:字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。这道题目感觉有点难(1)首先列出所有的字典序,然后选择第k个class Solution {public: bool static compare(int a,in...
2020-07-31 01:30:59
852
原创 最小公倍数和最小公约数
如果我们要计算两个数的最小公倍数的话,假设这个两个数为a,b,并且,a=k1*n,b=k2*n。期中n为这个两个数的最大公约数,那么,这个两个数的最小公倍数可以变成这两个数相乘然后除以最小公约数。也就是: result=a*b/n;那么最大公约数这么求勒?用辗转相除法发,假设这个两个数为8 6 。那么用大的数除以小的数,将余数和两个数中小的这个作为新的待求对象。也就是 6 8%6 ,故 6 2 然后继续。 2 0 。当小的数变成0的时候,那么另外一个非零的就是最大公约数:代码:...
2020-07-30 23:38:13
956
原创 和可被K整除的子数组
题目:给定一个整数数组A,返回其中元素之和可被K整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000 -10000 <= A[i] <...
2020-07-30 22:21:51
739
转载 最长上升子序列问题
LIS指的是最长上升/递增子序列(Longest Increasing Subsequence)。首先给出上升序列的概念,如果某个序列有如下性质(x_1, x_2,...,x_n),x_1 < x_2 < ... < x_n那么就称该序列是上升的。那么LIS类问题就是给定一个序列(不一定是完全升序)(a_1, a_2,...,a_n)求该序列中的最长上升/递增子序列的相关内容。这里简单介绍下字符串的子串(substring)和子序列(subsequence)的基本概念:.
2020-07-30 17:18:17
673
原创 前 K 个高频元素
题目:给定一个非空的整数数组,返回其中出现频率前k高的元素。eg:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]eg:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) ,n是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案...
2020-07-30 01:06:41
98
原创 C++ 的优先队列priority_queue
c++ 中有小堆顶和大堆顶两种数据结构,他们分别的含义是父节点比两个子节点都大或者都小。如此一来堆栈的最顶部就是最大的或者是最小的。大小堆顶一般是hi用连续的容器实现的,比如说数组,vector,queue等。不可以用不连续的容器来实现。主要的 原因是联系连续的数组可以任意地址访问,大小堆顶如果知道了父节点的索引,那么久可以很快的计算出两个子节点的索引。所以需要用连续的容器来作为实现的底层。大小堆的每次插入和删除的时间复杂度都是logn的。(PS给你一个无序的数组,建堆的时间复杂度是O(n)的)。...
2020-07-29 23:34:49
538
原创 C++中的constexpr
在C++中有#define 哟const 有 constepr等不同的关键字,他们之间有相似的地方,也有不同的地方。首先是#define 关键字,这个只是在预编译之前的简单替换、const 关键字修饰的更多的表达的是一种readonly的意思,就是只读。这个不一定是常量,但是一定是不可以读取,const变量的初始化可以在运行的时候确定,他只是限制了在运行的时候只可以读取, 实际上const变量在运行的时候也可能是变化的,例如:通过const_cast()进行去除了const限定(对于cons...
2020-07-29 12:01:03
704
转载 C++ 中的NULL 和nullptr的区别
在写C++的程序的时候,可以看到NULL 和nullptr两种空指针。他们有哦什么区别勒?一、C程序中的NULL 在C语言中,NULL通常被定义为:#define NULL ((void *)0) 所以说NULL实际上是一个空指针,如果在C语言中写入以下代码,编译是没有问题的,因为在C语言中把空指针赋给int和char指针的时候,发生了隐式类型转换,把void指针转换成了相应类型的指针。int *pi = NULL;char *pc = NULL;二、C++程序...
2020-07-29 10:48:30
703
转载 最小生成树的两种方法(Kruskal算法和Prim算法)
由于不断向集合u中加点,所以最小代价边必须同步更新;需要建立一个辅助数组closedge,用来维护集合v中每个顶点与集合u中最小代价边信息,连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连通图。 连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价,称这种连通图叫做连通网。 生成树:一个连通图的生成树是指一个连通子图...
2020-07-28 15:21:00
225
转载 懒汉式单例解决线程安全
懒汉式单例模式首先我们先来回顾一下饿汉式单例模式:class Singleton{ private static Singleton singleton=new Singleton(); private Singleton(){} // 什么都不做 public static Singleton getInstrance(){ return singleton; }}public class Test{ public static
2020-07-28 12:59:32
905
原创 B树和B+树
B树是一种为了降低磁盘的读取次数而创建的的平衡搜索树,可以有效地 降低IO的操作。许多数据库里面用B树或者是B树的变种来存储数据。B树的结点可以有很多的孩子,数量从几个到几千个。也就是说,B树的高度可以很低。 B树的每个节点x有如下的属性: (1)每个节点假设有x.n个关键字 (2)x.n个关键点本身对应的x.key1 x.key2x.key3x.key4....... 以一中非降序的顺序排列 ...
2020-07-26 22:48:37
110
原创 STL中的Vector的简单原理
STL中提供了一个非常好用的动态数组模板vector,vector一般有下面的集中函数 begin():返回指向容器中第一个元素的迭代器。 end():返回指向容器中最后一个元素后面的位置的迭代器。 rbegin():返回指向容器中最后一个元素的反向迭代器。 rend():返回指向容器中第一个元素前面的位置的反向迭代器。 erase(...):从容器中删除! clear():从容器中删除所有元素。 front():返回容器中第一个元素的引用。 ...
2020-07-26 03:56:58
329
原创 Epoll,select/poll的区别和特点
在linux中有三个IO复用的函数或者说模型。这个就是poll,select/poll。他们为了节约CPU的资源,避免大量的时间进行等待IO的数据,为了让CPU可以同时服务多个IO口,然后就先后出现了select poll,epoll等三中IO复用的方式。 IO复用就是CPU的分时复用去处理IO数据,由于CPU的速度比IO读取速度快很多。所以,有的情境性下,当CPU需要处理多个IO的时候,就类似于一个保安监控多个地区的情况一样,那里有状况就去处理,没有状况就在监控...
2020-07-26 03:34:17
247
原创 相邻的数据差值最小
题目:牛牛有n朵需要摆放的花,但是每朵花呢,高度都不一样,牛牛不喜欢相邻的花高度相差太多,这样会影响美感。所以牛牛提出了一个“丑陋度”的概念,“丑陋度”意思为在一个摆放序列中,相邻花高度差的最大值。而且牛牛是一个完美主义者,所以他希望:1.将这些花摆成首尾相接的圆形2.为了美观,他希望摆放的花“丑陋度”最小程序应返回:按照这些花排成一个圆的顺序,输出在多个摆放花的序列中,最小的“丑陋度”。输入:5,[2,1,1,3,2]输出:1说明:可以摆成 1 2 3 2 1这样的序...
2020-07-25 23:37:08
1663
原创 计算操作奇数
题目1:在牛牛面前放着nnn个数,这些数字既有奇数也有偶数,只不过牛牛对奇数情有独钟,他特别想让这些数都变成奇数。现在牛牛获得了一种能力,他可以执行一种操作:每次选中一个偶数,然后把这些数中与该数相等的数都除以2,例如现在有一个数组为[2,2,3][2,2,3][2,2,3],那么牛牛可以执行一次操作,使得这个数组变为[1,1,3][1,1,3][1,1,3]。牛牛现在想知道,对于任意的nnn个数,他最少需要操作多少次,使得这些数都变成奇数?输入3,[2,2,3]输出 1代码:.
2020-07-25 23:10:11
254
原创 2020年中兴捧月傅里叶派决赛题目
简单的将自己做的2020年中兴捧月杯决赛傅里叶派的题目分享一下,并分享一下自己的思路和过程。欢迎大家讨论分析。
2020-06-25 01:44:33
1036
原创 快慢指针法~!
题目: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 链表的结构如下图:struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }}; 这个题目简洁明了,完全不做作。一看这个题目有两个思路:(1)标记法 非常简直直接的思路,就是记录一下走过的...
2020-06-07 23:54:00
318
原创 MySQL的安装和用户权限账户密码
目录MySQLD的安装MySQL的客户端的使用 启动和登录 查看数据文件查看某个数据文件查看 状态MySql的用户权限和密码账号的创建账号的改名:账号的删除账号密码更改:账号的权限ROOT 密码忘记MySQLD的安装 mysql下载完成之后,解压打开后文件大概是这个样子,其中my.ini 是配置文件,刚刚打开的安装包可能有多个.ini 文件 这个是为了不同的操作系统和不同规格的数据库准备的...
2020-05-31 02:06:08
964
原创 约瑟夫环问题的一般思路
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。这个是非常典型的问题,别人都叫他约瑟夫环问题。(1)比较简单的思路是模拟这个过程,用一个数字去模拟这个过程,每次都删掉一个数据,或者是记录一下。(2)数学归纳法,或者叫做动态规划的东西来做, (2):数学归纳法: ...
2020-05-26 14:55:42
2127
转载 __stdcall、__cdcel和__fastcall定义与区别
1、定义__stdcall__stdcall是Pascal方式清理C方式压栈,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上”@”和参数的字节数。 int f(void *p) –>> _f@4(在外部汇编语言里可以用这个名字引用这个函数).__cdecl__cde...
2020-04-22 15:00:29
199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人