自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 STL源码剖析——list容器的排序算法sort()

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenhanzhun/article/details/39337331 </div> <link rel=&quot

2018-12-24 10:57:21 665 1

原创 leetcode 22 : Generate Parentheses

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”...

2019-04-18 21:44:20 133

原创 C/C++中extern关键字用法总结

1.基本解释: extern 可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外,extern 也可以用来链接指定。 extern 有两个作用:(1) 当它与"C"一起连用时,如:extern “C” void func(int a);则告诉编译器在编译 func 函数名时按着 C 的规则去翻译相应的函数名而不是 C++ 的。...

2019-04-10 19:03:39 5969 1

原创 epoll中的ET模式将套接字设置为非阻塞

 epoll中的ET模式即边沿触发方式,在只有缓冲区从不可读到可读,从不可写到可写的转变下才会触发。假想几种解决方式(均为ET模式下,触发EPOLLIN事件) 1.套接字描述符设置为阻塞(1)从缓冲区读一次:此种情况下,如果一次没有从缓冲区中把数据读完,则再也不会触发EPOLLIN事件(2)从缓冲区中一直读数据,直到没有数据可读为止,那么此时会陷入读数据阻塞状态 2.套接字描述符设置为非...

2019-03-11 16:58:03 735

原创 vi编辑器使用快捷方式

 1.显示行号:set num 2.定位到某一行: :num 3.删除某一行: 光标在指定一行 dd 4.复制某一行并粘贴到指定位置:光标在指定一行 yy 然后光标在想粘贴的一行 p 5.每次打开vi都显示行号,自动缩进,关键字高亮,以及tab缩进为4个空格修改~/.vimrc文件,里边的内容如下: set nu set tabstop=4 set ai syntax on...

2019-02-27 15:38:13 204

原创 编程杂散总结

 1.在使用 struct 描述网络包的时候,使用 “attribute((packed))” 能保证 struct 的 member 之间没有 gap://eg1struct message { uint8_t a; uint32_t b;} __attribute__((packed)); //sizeof 为 5//eg2struct message2 { uint8_t ...

2019-02-22 09:03:10 421

原创 链表中倒数第K个节点

题目描述输入一个链表,输出该链表中倒数第k个结点。思路: 倒着数,关联着先进后出的栈。在这里可以采用栈来做,把所有的节点指针进栈,然后再弹出(k-1)个数,现在的栈顶即为所求节点。时间复杂度O(n),两次遍历空间复杂度O(n),辅助内存存储全部数据代码如下:/*struct ListNode { int val; struct ListNode *next; ListNo...

2019-01-06 10:51:05 143

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

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路: 出于不同的考虑,会有不同的解法。(1)仿写牛客https://www.nowcoder.com/questionTerminal/beb5aa231adc45b2a5dcc5b62c93f593要想保...

2019-01-05 21:32:54 132

原创 数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路: base:+ - 0;exponent : + - 0; base的正负号影响并不大,倒是等于0会产生较大的影响,就是对0exponent的讨论,这里不作讨论,大家应该都明白。 假设base不为0,接下来就是对exponent的分别讨论了。1。 最终结果也...

2019-01-05 19:32:19 174 5

原创 二进制中1的个数

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路一: 数字在计算机中的存储形式本来就是二进制的,那么我们(1)可以通过 & 操作来获取数字最后一位的值(2)然后通过移位 >> 操作来使该数字右移(3)重复一二步的操作,直到最终数字为0当然在这里我们也可以选择 1 左移,然后 & 来取得每一位的值,这样反而不容易出错。代码如...

2019-01-03 14:55:58 108

原创 矩形覆盖

题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路: 对于一个2*n的大矩形,我们可以采取横着或者竖着去覆盖更大的矩形。所以对于最底层,我们可以选择使用横着覆盖,或者两个竖着来覆盖。即S(n)=S(n-1)+S(n-2),这很明显了,是个斐波那契数列。代码如下:class Solution {p...

2019-01-03 14:17:39 170

原创 变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解法一:举例总结规律解法二:数学逻辑(1) S(n)=S(n-1)+S(n-2)+…+S(0);(2) S(n-1)=S(n-2)+S(n-3)+…+S(0);(1) + (2) ==>S(n)=2*S(n-1);数学逻辑证明规律的存在,接下来就看代码,可以...

2019-01-03 13:43:57 81

原创 跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路: 最开始想的是从下往上跳,一直跳到第 n 阶。这样可以先举例试试,然后总结归纳规律,其实是斐波那契数列。 接下来我们反着跳,从第 n 阶往下跳,那么总共的跳法就是第一次跳 1 阶的解法数S(n-1)加上第一次跳 2 阶的解法数S(n-2)之和。(感觉反着跳...

2019-01-02 22:35:06 93

原创 斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解法一:使用递归回溯解法 网上的资料很多,不多解释,代码如下:但是这种方法的时间与空间复杂度肯定很高,重复计算太多。class Solution {public: int Fibonacci(int n) { if (n == 0)...

2019-01-02 20:10:08 170

原创 旋转数组的最小数字

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 对于这类题目,使用遍历绝对是可以做出来的。但是效果绝对不会太好。 接下来会试着缩小范围,比如使用二分查找...

2019-01-02 11:29:35 92

原创 二维数组和二级指针

 二维数组是二维数组,二级指针是二级指针,两者没有任何关系。比如:char a[2][3]; //当要传递参数的时候,传的是char (*)[3],而不是char **,切记不要搞混了。...

2018-12-26 10:06:42 599

原创 二叉搜索树的第k个节点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。 二叉搜索树的中序遍历即是有序的,按从小到大的顺序排列的。解法一: 可以选择全部遍历二叉树,把结果存下来,再找出第K个节点。当然,这是比较简单但是会做很多无用功。那有没有一种方法,可以直接一步到位那? 关于这种解法,记得排除特殊情况(1)pRoot =...

2018-12-10 22:39:14 85

原创 滑动窗口的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1},{2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...

2018-12-05 19:27:51 85

原创 矩阵中的路径

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...

2018-12-05 19:16:41 128

原创 机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8> = 19。请问该机器人能够达到多少个格子?解法一: 很像八皇后问题,通过...

2018-12-04 16:20:40 292

原创 C++冒泡排序及改进

 冒泡排序:从第一个数到最后一个数,相邻的两个数进行比较,大数下沉,小数上浮,这样获得一个最大值;第二轮中从第一个数到倒数第二个数,两两比较…一共需要比较 n - 1轮。void bubbleSort(int array[], int n){ for (int i = 1; i < n; i++) for (int j = 0; j < n - i; j++) { ...

2018-12-03 20:54:03 2303

原创 把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解法一: 这个题和之字形打印很像,这里我们直接使用两个双端队列就好了deq_1, deq_2。 思路如下根节点指针放入 que_1,根据 que_1中的元素,可以得到其对应的左右孩子,也就是下一行数据,存放入 que_2仿照第一步, que_2中的元素的左右孩子,用 que_1来存放交替执行第一、二步,直到...

2018-12-03 11:24:24 106

原创 按之字形顺序打印二叉树

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解法一: 使用两个双端队列,一个当队列用(从左到右打印),一个当栈用(从右到左打印)。 大致思路如下:定义两个双端队列的数据结构 deq_1, deq_2,相互初始化。deq_1 中的元素的左右子树,按顺序进入 deq_2,然后 ...

2018-12-03 10:07:33 115

原创 删除链表中重复的节点

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解法一: 因为删除重复的结点是一种重复的操作,所以可以单独写个函数来实现它。(本来我想直接一个函数搞定的,但是思路有点乱,代码也很乱)

2018-12-02 21:52:57 82

原创 链表中环的入口节点

题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 基础假设:找出环的入口节点后,链表不变。(自己假设的,你也可以有自己的假设) 解释一下吧。我想过修改 val 的值作为一个标记,可那样链表的存在就没什么意义了;或者采用全断链的方式做,内存泄漏;如果你全释放了,入口节点那?解法一: 使用map<ListNode*, int>数据结构来记录,...

2018-12-01 22:30:28 91

原创 表示数值的字符串

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。解法一:找到字符’e’ 或者 ‘E’,把字符串分为两段,分别判断字符左边:满足要求(1)小数点只能出现一次 (2)加减号只能

2018-11-30 21:17:53 80

原创 正则表达式

题目描述请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配解法一:这里主

2018-11-30 19:49:35 79

原创 构建乘积数组

题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。解法一:最开始我想用移位来做的,举个栗子, (num * 5 = num >> 2 + num >> 1),这种明显是可行的,然后我就想通过一些基础运算,把移位也应用到这里,发现还...

2018-11-29 09:53:27 71 1

原创 数组中重复的数字

题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解法一:数字计数,类似于word count,想到了使用关联容器map来做(map底层是用红黑树实现的)。具体思路如下:...

2018-11-28 16:17:48 83

原创 把字符串转换成

题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0。 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入 复制+21474836471a33输出 ...

2018-11-27 11:18:39 147

原创 对称的二叉树

题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。解法一:第一种想法,生成一个二叉树镜像,然后比较原二叉树和二叉树镜像即可。这个肯定是没问题,但是有没有必要生成一个二叉树镜像那?因为原二叉树需要保留,不然就没有参照了。所以,涉及到新内存分配,这就会在内存分配和构建对象上花费大量的时间和空间,故转而寻求其他解法。第二种想...

2018-11-26 19:34:26 92

原创 二叉树的下一个节点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解法一:最开始我想的是穷举法。假设有一颗满二叉树,考虑每一个节点的情况。结果发现太麻烦了,而且容易落情况。转换思路:把中序遍历的结果存放在vector中,然后再遍历整个vector,从而获得结果/*struct TreeLinkNode {...

2018-11-26 11:35:51 82

原创 不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解法一: 对于这个题我先说一下我自己的思路吧。看到题目,我脑袋里的第一个想法就是用异或(^),类似于全加器(计算机组成原理或者数电中的知识吧,忘了) 首先利用(num & 1)分别获取两个整数当前位的值,tmp1 = num1 & 1;tmp2 ...

2018-11-22 17:27:37 79

原创 扑克牌顺子

题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,...

2018-11-18 21:17:24 114

原创 同一网段网络连接测试

实验环境:       (1)两台笔记本电脑,均为Windows10操作系统,一台为联想小新锐7000(配置好一点),一台为联想小新潮7000(2号机)。两台电脑防火墙均处于打开状态。       (2)2号机上装有VMware,安装ubuntu14.04系统,虚拟机采用联网采用桥接模式实验一:       两台电脑,一台连接手机USB分享网络(称之为1号),一台连接手机开的热点(...

2018-11-16 11:35:20 521

原创 翻转单词顺序列

题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?看到这种题,想法...

2018-11-15 17:17:57 76

原创 和为S的两个数字

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。       在写解法之前,先思考一个问题,在存在多组和S的情况下,满足什么条件,输出两个数的乘积最小,结论是:在数组中,两个数字离的越远,其乘积就越小。        证明:在存在多组...

2018-11-14 20:02:04 57

原创 和为S的连续正数序列

题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正...

2018-11-13 22:25:23 61

原创 codeblocks中htons@4错误处理

原因:缺少lib库解决方案:settings->Complier settings->Linker settings->Add->/*我用的是MinGW(此处是MinGW的绝对路径)*/例如:D:\CodeBlocks\MinGW\lib\libws2_32.a

2018-05-24 10:44:59 253

原创 leetcode第35题C语言解法

我的解法(4ms):int searchInsert(int* nums, int numsSize, int target) {        int i;    for( i = 0; i < numsSize; i++ )    {        if( nums[i] >= target )            return i;    }    return numsSiz...

2018-05-20 17:25:44 311

libnodave-0.8.5版本

源码支持PLC200/300/400与上位机进行通讯,采用S7协议

2018-07-02

空空如也

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

TA关注的人

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