自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xinyu913

竹子的三厘米

  • 博客(87)
  • 资源 (1)
  • 收藏
  • 关注

原创 Robot Framework 学习笔记(一)

序为了更好的适应工作,提前开始准备学习内容,按照个人学习进度进行阶段性总结,Robot Framework属于自动化测试框架,本文基于Windows7系统进行相关软件安装讲解。安装过程第一步: Python下载地址 https://www.python.org/downloads/ 选择2.7版本,下载文件为.msi直接双击安装默认路径/自选路径;为了后续可以在cmd里直接使用Python命令安

2016-04-11 17:03:05 1156

原创 百度测试开发9/16/2015

百度测试开发 三面都是,一面二面都是技术面,三面经理面,十分和蔼就侃大山了,二面面试官会压力面 1 自我介绍(重点突出个人特色或者经历) 2 写个算法吧:思路+代码,先和面试官聊你的正确思路,再写代码,面试官会先看你的逻辑对不对,不对是不会让你下笔的,考了一个链表中间结点,不知道长度(剑指offer原题,关键点两个指针遍历),然后问了数学逻辑100!得到的结果中有几个0,我的思路,就看阶乘里有

2015-09-19 22:06:10 685 1

原创 vector中capacity,reserve

capacity, reserve, size

2015-09-14 11:35:25 562 1

原创 顺序容器操作2

顺序容器操作

2015-09-14 11:12:17 421

原创 顺序容器vector-用法1

vector<T> ::

2015-09-13 22:32:03 374

原创 面试题总结1

malloc和new有什么区别? 1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把

2015-09-13 21:54:51 543

原创 Internet采用哪种网络协议?该协议的主要层次结构?

TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。TCP/IP是用于计算机通信的一组协议,我们通常称它为TCP/IP协议族。它是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的INTERNET是目前国际上规

2015-09-05 14:59:37 8139

原创 腾讯面试准备

1.腾讯笔试题:const的含义及实现机制const的含义及实现机制,比如:const int i,是怎么做到i只可读的?2腾讯笔试题: 到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少? 由于优惠券可以代替现金,所以可以使用200元优惠券买东西,然后还可以获得100元的优惠券。 假设开始时花了x元,那么可以买到 x + x/2 + x/4 + …

2015-09-02 11:32:34 565

原创 腾讯内推电面经历

腾讯(测试开发1面) 1.自我介绍 2.介绍一下建模 3.介绍快排,空间复杂度如何优化 4.c语言tcp服务器编程,与udp区别 5.linux下查看文本,找固定某个字段比如a,怎么找 cat file | grep “string”或者grep “string” filename 6.fork()前变量,fork后会改变父进程的变量吗 fork 是这样的,父进程的变量都会成

2015-08-31 20:47:04 1609

原创 c++知识点总结(不时更新)

【面向对象的概念】世间万物皆有属性和方法,将这些封装起来就是一个对象,封装,继承,多态等【内存分配】栈区: 存储函数的参数,局部变量,程序的返回地址等,编译器需要的时候会自动分配内存,不需要的时候会自动清除。 堆区: 由程序员分配和释放,若程序员不释放,程序结束时操作系统会释放,分配方式类似于链表,动态分配的内存都是在这里,new,malloc,需要用delete,free来释放

2015-08-31 20:32:14 452

原创 线程与进程

区别与联系1.定义角度 进程是一次程序的执行;线程是进程中执行的一段程序片段。 2.内存角度 进程间相互独立,同一进程内的两段代码不能同时进行,如要进行除非引入线程,线程在进程空间内,同一进程所产生的线程共享同一内存空间。 3.状态角度 进程退出,导致所有线程全部退出并清除。 4.通信角度 进程间可以通过IPC通信,但线程间不可以。线程安全此问题只针对于多线程情况,多个线程同时操作全局

2015-08-05 15:18:40 913

原创 排序算法总结

冒泡排序,插入排序,选择排序,归并排序,堆排序,快速排序的总结

2015-07-03 10:50:03 631

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

【题目】输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从数的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRig

2015-06-26 14:28:02 614

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

【题目】输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都各不相同。【分析】假设输入数组{5,7,6,9,11,10,8}要判断它是不是二叉搜索树的后序遍历结果,就要结合二叉搜索树特点及后序遍历的方法来判断,后序遍历特点是数组最后一个就是二叉树的根节点,所以由此判断树根结点为8,并且先遍历左子树,再遍历右子树,所以

2015-06-25 16:09:55 822

原创 Binary Sort Tree(BST)

Basic structuretypedef struct BstNode{ key_type key; struct node *lchild; struct node *rchild; struct node *parent;}NodeStructure FeatureIf left_child is not NULL, left child is small

2015-06-25 14:44:36 504

原创 从上往下打印二叉树

【题目】从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如:打印结果:8,6,10,5,7,9,11。【分析】二叉树遍历方式:前序,中序,后序,还有一种广度优先遍历,在对图遍历时涉及到,而二叉树可以看作退化的图,从例子中可以看出,打印顺序是按层决定的,观察发现,打印完根节点之后,然后打印其左右节点,再继续打印左节点的左右孩子和右结点的左右孩子,由此可以发现,如果将其结点的左右孩

2015-06-25 11:00:05 2309

原创 栈的压入、弹出序列

【题目】输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二序列是否为第一个栈的出栈序列,假设入栈所有数字各不相等,例如: 入栈序列{1,2,3,4,5} 出栈序列1{4,5,3,2,1} 出栈序列2{4,3,5,1,2} 出栈序列1是入栈序列的其中一个弹出结果,序列2不是。【分析】 弹出序列第一个为4,所以要让栈顶元素为4时弹出,所以压入1,2,3,直到4出现在栈顶,序列1第二个为5

2015-06-24 17:11:28 578

原创 包含min函数的栈

【题目】 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的的min函数。在该栈中,调用min\push\pop的时间复杂度都为O(1)。【分析】 对于本题,如果想要在实时得到栈中数据的最小值,对栈内排序或者遍历查找时间复杂度都很大,所以保证时间复杂度的情况下找到最小元素的办法就是设立一个辅助栈,一直存放数据最小值,在压入栈的同时,与辅助栈栈顶对比,如果辅助栈栈顶元素小于压入栈元素,则

2015-06-24 10:33:57 410

原创 顺时针打印矩阵

【题目】输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如:如果输入如下矩阵: 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【分析】如图,对于矩阵有以下几种情况,顺

2015-06-23 16:32:08 686

原创 二叉树的镜像

【题目】请完成一个函数,输入一个二叉树,该函数输出它的镜像。【分析】镜像概念:犹如人照镜子一般,二叉树的镜像,就是将镜像二叉树与原二叉树对折可以重合的意思,如下: 实现方法: 一层一层向下遍历每个根节点,将根节点下的左右孩子交换位置。 从根节点开始,交换其左右孩子6和7,以7为根节点的子树结构和以6为根节点的子树结构完全交换后,递归操作左子树和右子树,如图所示。【测试结果】测试例中二叉树:

2015-06-17 21:11:50 824

原创 树的子结构判断

【题目】输入两棵二叉树A和B,判断B是不是A的子结构。【分析】典型的二叉树问题。 判断两个二叉树的所属关系,其实还是要从二叉树的结构特点出发,二叉树由根节点和左右孩子构成,如果一个二叉树是另一个的子树,说明这个二叉树根节点,左右孩子必然存在于另一个二叉树中,例如:观察上图,发现第二个二叉树明显是第一个二叉树的子结构,首先,看根节点,8,第一棵树根节点为8,等于第二棵二叉树,观察其左右孩子结构,如果

2015-06-17 15:16:44 1540

原创 合并两个排序的单链表

【题目】输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的。【分析】合并单链表,需要找到头结点,对比两个链表头结点后,确定头结点,再确定头结点下一个结点,循环递归的如前面一样操作确定每个结点位置,同时考虑边界条件,如果两个链表为空,则肯定无需合并了,就是空链表,如果一个链表为空,另一个不为空,则返回不为空的链表。具体分析流程可以看下面的例子:【测试代码】#include<s

2015-06-09 10:49:18 692

原创 反转链表

【题目】定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点。【分析】单链表的延伸题,基本单链表如前面博客里所述方法创建,对于反转链表,实现的过程就是遍历一个结点,记录他的前一节点,让现在的结点的下一指针指向前一结点,但是为了保证可以继续遍历原下一节点,不造成断节,还需要注意保证结点的原下一个节点也被保存,同时要注意到检查到最后一个结点就是反转链表的头结点。基本过程如下所示:先看

2015-06-08 21:55:35 671

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

【题目】 输入一个链表,输出该链表中倒数第k个结点。【分析】 对于此题,考虑单链表实现,单链表只能从头到尾遍历,而要找到倒数第k个结点,就需要确定,正数是第几个结点,假设结点总数为n,最后一个结点位置为n-1,而倒数第k个结点的位置就为n-k+1,如果从头节点开始遍历,只要遍历到n-k+1步就可以,这就意味着我们需要知道两个关键信息,一个是链表长度,一个就是n-k+1,这就需要遍历两次,很明显,

2015-06-08 20:47:54 574

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

【题目】输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。【分析】比较直接的笨方法就是遍历每一个,只要是偶数,就拿出来,将后面的数依次往前挪动,将偶数填放在数组的最后方,每碰到一个偶数就要挪动o(n)个数字,那么总的时间复杂度就是O(n^2),效率太低,如何改善,可以观察数组如果要奇数位于偶数之前,也就是顺序颠倒的要换过来,从两头往中

2015-06-07 14:09:57 554

原创 打印1到最大的n位数

【题目】 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的三位数999。 【分析】 思路1:循环打印,但是遇到大数问题,就不好解决了。 思路2:对大数问题,考虑用字符串储存十进制数,就不会考虑溢出的问题,用字符串模拟数字的加法,再把字符串表达的数字打印出来。 思路3:更简洁的办法是利用全排列递归方法,n位所有十进制数其实就是n个从0到9的全排列

2015-06-04 15:43:25 486

原创 数值的整数次方

【题目】实现函数double power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。【分析】此问题很简单,但是需要重视以下几种情况: 1. exponent < 0 ,结果为整数次方的倒数; 2. exponent = 0, 结果为1; 3. base = 0 && exponent = 0 , 结果为0,本

2015-06-03 14:49:25 551

原创 旋转数组的最小数字

【题目】把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,给数组的最小值为1.【分析】直观讲,看到查找一个数组的最小值问题,第一感觉是利用直接顺序查找法,时间复杂度为O(N),这并没有什么优势在数组很大的情况下,观察数组发现它的部分是有序的,所以,我们想到用二分

2015-06-02 18:48:25 777

原创 快速排序算法

在前面博客有写英文版的快速查找实现例子,在复习的时候,有了新的领悟。【思想】快速排序算法关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的移动到数组左边,比选择的数字大的移动到数组的右边。【实例说明】快速排序数组data[] = {2,4,9,3,6,7,1,5},设置第一个数为基准值,将其他元素与其进行比较,数组长度为8,设置两个指针i,j分别指向待排序数组首末下标,

2015-05-27 22:43:01 772

原创 用两个队列实现栈

【要求】用两个队列queue1,queue2来实现栈的压栈和出栈功能。【分析】此问题类似于用两个栈实现队列的功能的思路,将队列queue1作为入栈专职,queue2作为中转,主要思路是,压栈时将所有元素全部进队queue1,出栈时由于要将queue1最后一个进来的元素输出,所以先将queue1除最后一个元素以外的所有元素转到queue2,出队输出最后一个元素后,将queue2所有元素出队,重新入队到

2015-05-27 18:41:19 558

原创 用两个栈实现队列

【题目】用两个栈实现一个队列,分别完成在队列尾部插入结点和在队列头部删除结点的功能。【分析】假设两个栈,栈1和栈2,来实现队列,栈1用来入队,栈2用来出队。 入队时,将元素全部压入栈1; 出队时,如果栈2不为空,就直接pop栈2,否则,就将栈1的所有元素pop到栈1里,再把栈2栈顶弹出。 由图所示,abcdef依次入队,压栈,出队时先将元素从s1弹出,压入s2,从s2出栈实现出队,即使后面再有

2015-05-26 21:19:42 422

原创 队列

【定义】队列和栈有异曲同工之妙,明白栈以后,对理解队列会很快,队列属于先进先出,尾部插入,前面删除,俗称队尾和对头,前删后插。【顺序存储队列】 【难点解析】1.假溢出现象顺序存储结构难点在于出列,出列后数组有位置时的入列情况,引入front指针指向队头元素,rear指针指向队尾元素的下一个位置,空队列时front = rear,出队列时front往后移,入队列时rear往后移,但是会出现一个问题,

2015-05-26 15:29:10 548

原创

【定义】栈是限定仅在表尾进行插入和删除操作的线性表,栈的插入就是压栈,栈的删除就是出栈,为后进先出结构,出栈的地方叫做栈顶。【基本结构】一共有两种栈的存储方式,一种顺序栈,通常由数组实现,另一种链栈,由单链表指针实现,顺序栈选择数组首元素作为栈顶,链栈选择头指针位置作为栈顶。顺序栈基本结构:typedef int stack_data;typedef struct My_stack{ s

2015-05-25 11:15:05 702

原创 二叉树重建(衔接上一篇二叉树基本讲解)

【题目】输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树,假设输入的前序遍历和中序遍历的结果中都不含有重复的数字,例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},重建二叉树并输出头结点。【分析】对根节点和左子树右子树分别分析【根节点】前序遍历结果和中序遍历结果可以唯一确定一棵二叉树,前序遍历的过程就是从根结点开始,先访问根结点,再遍历左

2015-05-22 10:53:50 619

原创 二叉树

【二叉树特点】二叉树由根结点,左子树和右子树构成,具有以下几个典型特点:只有一个根节点,每个结点下面最多只有两棵树;在二叉树的第i层上至多有2^(i-1)个结点(i>=1);深度为k的二叉树至多有(2^k) -1个结点(k>=1);对任意一颗二叉树,如果叶子结点数为n0,度为2的结点(结点拥有的子树数就是度)点数为n2,则n0 = n2 + 1; 对于第4个特点,需要特别解释一下,可以从连

2015-05-21 18:20:04 738

原创 单链表双指针实现

单链表的实现思想和双指针的应用方法在前面博客中都已阐述,在本文将实现双指针实现单链表的初始化,插入,删除,打印。 【测试代码1】#include<stdio.h>#include<stdlib.h>typedef struct Node{ int data; struct Node *next;}node_t;//创建头结点node_t * create(){ n

2015-05-20 20:14:46 1259

原创 详谈指针*/**,引用&

【指针*与&】指针和数组有异曲同工之妙,在前面博客有专门解释过,指针声明用*,凡是在声明一个变量前面加上这个符号,就是说明声明的这个变量是一个指针,它是一个地址,比如:int a = 2;int *p;p = &a;p就是一个指向整型变量的指针,p指向的是整型变量a的地址,而*在使用的时候还有一个别名,解引用,抵消了&引用功能,&在这里是引用a的地址。*p = 1;//其实*p = *(&a)

2015-05-20 11:05:23 620

原创 单链表总结篇

【基本概念】单链表即单向链表,数据结构为一个接一个的结点组成,每个结点有两个成员,一个数据域一个指向下一个结点的指针,如下:struct Node{ int data; struct Node *next;};单链表基本操作包括链表初始化、插入、删除,其中初始化操作是指让单链表存在一个头结点,其数据域随机,头结点指向下一个结点,每次访问都要从头结点开始访问,插入结点方式有两种,尾

2015-05-19 16:57:05 1139

原创 从尾到头打印单链表(剑指offer面试题5)

【题目】输入一个链表的头结点,从尾到头反过来打印出每个结点的值。【分析】此题考察单链表的理解和应用,为了实现打印,必须先建立一个单链表,头结点可有可无,但有头结点和无头结点在编程上是应该注意的,反向打印思路不一样,这里以包含头结点举例分析,单链表以尾部插入方式建立,头结点数据域为空,头结点指针指向下一结点,反向打印的思想,有两种,一种以栈的形式,一种递归的形式。 1. 以栈的思想反向打印,主要是利

2015-05-19 10:33:08 475

原创 结构体+typedef的具体应用和解释

首先需要先了解结构体的基本知识: 1.结构体定义: struct 结构体名 { ……结构体成员; } 举例:struct student{ char name[10]; int age;}2.结构指针-struct *p 其中,p为指向结构的一个指针,在给p传地址时,要给他传入结构体类型的地址。 举例:struct student *p;st

2015-05-18 19:32:05 882

空空如也

空空如也

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

TA关注的人

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