自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

观赏的博客

跪求各位大神指导指导。

  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 判断一颗二叉树是是否是另一颗树的子树。

题目描述:.判断一颗二叉树是是否是另一颗树的子树。比如tree2是tree1的子树。 **难点分析: 要判断树2是否是树1中的节点,就需要遍历树1中节点与树2根结点比较。如果相同,则树1,树2同时遍历比较。两棵树进行两层遍历,对于技巧要求较高。思路: 将过程分为两步: 1,通过递归,在树1中每次给出一个节点。 2,通过递归,在树2中判断该结点所在树是否与树2一样。实现代码://节点信息: s

2017-07-29 00:06:50 743 1

原创 求链表A与链表B的差集

题目描述: 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。 链表结点的结构类型定义如下: struct node { int elem; node* next; };

2017-07-27 02:30:28 1760 1

原创 二维数组中的查找

题目描述: 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。难点分析: 一遍情况下,我们在二维数组中查找某一个元素,都是将数组遍历一遍。此时时间复杂度为O(M+N) 但是,本题中的二维数组的情况比较特殊。从左到右递增,从上到下递增,而且要求效率尽可能高。提示可以利用此规律,进行较快的查找。思路: 根据题意,知道,二维矩阵中,某一行最大数在最左

2017-07-27 00:06:15 363 2

原创 链表只翻转一部分

题目描述: 链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现Node* RotateList(Node* list, size_t k). (提示:这个题是链表逆置的升级变型)难点分析: 在原来链表逆置的基础上添加了k作为新的限制条件而已。思路:

2017-07-24 00:54:48 417

原创 二叉树相关面试题汇总

说明:本博文在以前面试题的基础上汇总了二叉树的常见面试题。二叉树中封装的功能有: void _CreateTree(Node*& pRoot, const T array[], size_t size, size_t& index, const T& invalid);//创建树 Node* _CopyBinaryTree(Node* pRoot);//拷贝树 void _Dest

2017-07-23 12:45:23 566

原创 17_7_22 一个数组中有一个数字的次数超过了数组的一半,求出这个字符。

题目描述: 一个数组中有一个数字的次数超过了数组的一半,求出这个字符。如:int a[]={2,3,2,2,2,2,2,5,4,1,2,3},求出超过一半的数字是2。难点分析: 如果,通过O(N)的时间复杂度,通过两层循环,求出每个字符出现次数。发现有大于数组个数一半的,那么就可以得到该字符。 但是,面试官是不希望看到这个答案的。那么就需要一些比较巧妙的办法了。思路: 思路: 如果,某个字

2017-07-22 23:38:15 338

原创 17_7_22 求二叉树叶子节点的个数/求二叉树第k层的节点个数

题目描述: 求二叉树叶子节点的个数/求二叉树第k层的节点个数思路: 这两个题目的思想类似,都是利用二叉树的自相似性,把每次传进来的节点看做是一个二叉树的根结点。将问题细化,将每个节点的状态信息返回即可。节点以及二叉树信息:template <typename T> struct BinaryTreeNode { BinaryTreeNode(const T& data)

2017-07-22 22:26:44 787

原创 17_7_21 二叉树的层序遍历

题目要求: 实现一颗二叉树的层序遍历难点分析: 没有要求,前序,或者中序、后序等常规一路走到底的遍历。 而是,按行从左到右遍历。第一次遇见,可能有点不适应。 需要想个办法,记录每一行应该走的顺序。 思路: 可以利用队列来实现。 1,先将根节点入队列, 2,进入循环,队首结点出队列,输出其值。 3,将其左右孩子节点入队列, 4,进行2-3循环,直到队列为空实现代码:template

2017-07-21 23:23:22 234

原创 17_7_20:计算一个整数二进制位中1的个数。

题目描述: 计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。难点分析: 如果,要判断每个位上的0或1。利用移位,然后和1相与,循环16次或32次或64次等等,这样不管正负,效率也还可以。 但是,题目要求效率尽可能的高。这样的话,就值得深思了。 关于效率问题。还得看位运算了。思路: 把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0

2017-07-20 14:43:41 333

原创 17_7_20:元素入栈出栈的合法性检测

题目描述: 元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。 入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。难点分析: 在出栈、入栈操作随机性比较强,不好把握它们的动态变换。 但是,要牢记栈的性质“后进先出”。第一个出栈的元素,肯定是当时栈空间中元素中最后进入的。即使,后来又有新的元素入栈,但是我们知

2017-07-20 13:51:03 358

原创 17_7_19:实现一个栈要求实现入栈、出栈、获得最小值的时间复杂度为O(1)

问题描述: 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) 。难点分析: 首先,我们知道,在栈的实现中,入栈、出栈操作的时间复杂度都是O(1)。 难就难在返回最小值的操作的时间复杂度。如果有一个值来存储的话,到时可以,但是,当有入栈,出栈操作时,这个最小值是不断变换着的。 所以,难点可以看成是:最小值如何存储,才能满足栈中元素

2017-07-19 23:58:52 1270

原创 17_7_18:两个栈实现一个队列。两个队列实现一个栈

题目: 1,使用两个栈实现一个队列 2,使用两个队列实现一个栈 1,使用两个栈实现一个队列思路: 根据栈的FILO性质,将数据,全部存入第一个栈中; 再将第一个栈中数据全部放入第二个栈中; 这样,将数据从第二个栈中取出时,达到了FIFO效果。template <typename T> class MyQueue { public: MyQueue() {} void

2017-07-18 20:01:43 214

原创 17_7_17:复杂链表的复制

思路: 有两种解决办法: 第一种: 1,遍历一次链表,构建一条新链表,只复制_data以及_next。 2,再次遍历原来链表,获取每次遍历节点的_random,在一次循环中,再次遍历链表。获取_random指向的位置到头结点的长度。在新链表中,也指向相对位置。 时间复杂度:O(n^2)第二种: 1,遍历原来的链表,每次循环中,在旧节点后面插入一个新节点。添加的新节点的_data是它前驱节

2017-07-18 12:00:14 221

原创 17_7_17:删除一个无头单链表的非尾节点。从尾到头打印单链表

【基础题】 1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表首先,给出节点信息#include <iostream> #include <cassert>typedef int DataType; typedef struct ListNode { DataType _val; ListNode* _pNext; }Node, *PNode; 1.删除一个无头单链表的非

2017-07-17 23:59:12 443

原创 shell实现彩色进度条

以前用C语言写过一个进度条。具体实现细节http://blog.csdn.net/qq_35524916/article/details/55657147 最近学习shell,就用彩色进度条来练练手。首先是,基础的进度条基本功能#!/bin/bashfunction bar() { i=0 bar="" lable=('|' '\\' '-' '/') whlie

2017-07-17 01:32:09 871

原创 17_7_16:判断两个链表是否相交,若相交,求交点。如果链表带环呢?

1.【基础题】–1.判断两个链表是否相交,若相交,求交点。(假设链表不带环)2.判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】 2.【附加题】–请问下面的程序一共输出多少个“-”? #include <stdio.h> #include <unistd.h>int main(void) { int i; for(i=0; i<2; i++){ fork(); prin

2017-07-16 23:52:12 506

原创 17_7_15:判断链表是否有环+求环的长度+求环的入口。设计不能被继承的类,只能堆/栈上创建对象的类

1.【基础题】–判断链表是否带环?若带环求环的长度?若带环求环的入口点?并计算以上每个问题的时间复杂度? 2.【附加题】–1.设计一个类不能被继承 2.设计一个类只能在堆上创建对象。 3.设计一个类只能在栈上创建对象。 ps:以上三个问题是类似的。**1,基础题** 这个三个问题,都是处理单链表中存在环的情况。难度依次递增。(1)判断链表是否带环。 思路:定义两个指针:快指针与满指针 快指针f

2017-07-15 07:11:45 330

原创 17_7_14:逆置单链表+查找单链表的倒数第K个节点+非常规方法实现Add函数

1.【基础题】–逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表 2.【附加题】–实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。ps:也不能用++、–等等**1,基础题:**/* 注:本次代码处理的是不带环的单链表 */ #include <stdio.h> #include <stdlib.h>typedef struct ListNode {

2017-07-14 20:39:12 388

原创 17_7_13:合并两个有序链表。实现1+2+3+...+n,不使用常规方法

1.【基础题】–合并两个有序链表,合并以后的链表依旧有序。 2.【附加题】–实现1+2+3…+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。(这个题有多种解法,大家可以尽量去思考,这个题最优的解法时间复杂度是O(1),大家可以去尝试实现)1,基础题:#include <stdio.h>typedef struct ListNode { int _val; struct

2017-07-13 06:24:54 389

原创 多线程与多进程服务器以及池的概念

1,多线程服务器 mul_pth_server.c中代码: #include //不要忘记了 #include #include #include #define P_NUMBER 255 //并发进程数量 #define COUNT 5 //每次进程打印字符串个数 #define LOGFILE "logFile.log" //日志文件 char *s = "my mul_pth

2017-07-03 17:45:03 338

原创 Linux shell之eval、``与$()

eval简介: eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。 也就是说,eval命令有两步。 第一步,扫描,并置换。类似于C语言中编译期间的宏替换第二部,执行替换之后的命令。类似于C语言运行期间,将替换后的值带入程序中运行计算。 这是eval最重要的功能。该命令适用于那些一次扫描无法实现其功能的变量,该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时被称为

2017-07-03 14:36:06 1068

vs2015编译vtk7.1

vs2015是由cn_visual_studio_community_2015_x86_dvd_6847368镜像文件安装而成,vtk版本是vtk7.1.1。本文档包含编译完成的include和lib文件夹

2018-05-10

汇编基础知识

2017-03-13

空空如也

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

TA关注的人

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