- 博客(73)
- 收藏
- 关注
原创 C++---------模板
C++---------模板模板分类:函数模板和类模板函数模板:概念:函数模板代表了一个函数家族,该函数模板和类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。注:函数模板不是真正的函数,它是编译器生成代码的规则1:函数模板格式template返回值类型 函数名(参数列表){}2:函数模板的原理:模板是一个蓝图,它本身不是类或函数,编译器用模板产生指定的类...
2018-09-13 12:46:34
302
原创 C++中的深浅拷贝
C++中的深浅拷贝参考博客:https://blog.csdn.net/feitianxuxue/article/details/9275979一:构造函数:概念:构造函数是一种随着对象创建而自动被调用的公有成员函数,有且仅在定义对象时自动执行一次,它的主要用途是为对象作初始化(初始化只能有一次)。特征:1:函数名和类名相同;2:无返回值;3:对象构造时(对象实例化)系...
2018-09-01 14:37:06
1294
原创 数组中的逆序对(归并排序)
题目描述:有一组数,对于其中任意两个数组,若前面一个大于后面一个数字,则这两个数字组成一个逆序对。请设计一个高效的算法,计算给定数组中的逆序对个数。给定一个int数组A和它的大小n,请返回A中的逆序对个数。保证n小于等于5000。测试样例:[1,2,3,4,5,6,7,0],8返回:7思路:参考剑指offer,采用归并的排序法 代码是我在牛客网oj环境下编译通过的:...
2018-08-28 11:13:17
475
原创 数组中出现次数超过一半的数字
数组中出现次数超过一半的数字题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0思路:方法一:如果有符合条件的数字,则它出现的次数比其他所有数字出现的次数和还要多。在遍历数组时保存两个值:一是数组中一个数字,一是次数。...
2018-08-27 22:14:13
201
原创 按之字行打印二叉树
题目描述:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:我们首先确定用哪种容器来实现,这里我们用两个栈实现比较简单,栈遵循先进后出的原则,并且只允许在固定的一端进行插入和删除元素操作。这里我用一个图来解释 /*struct TreeNode { int val;...
2018-08-27 18:27:28
371
原创 把二叉树打印成多行
把二叉树打印成多行题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行c++中empty的用法:http://www.cplusplus.com/reference/vector/vector/empty/思路都在代码里面,这个和把二叉树从上到下打印是一回事,只是需要一个分层的条件/*struct TreeNode { int val; ...
2018-08-27 17:14:01
116
原创 从上到下打印二叉树
题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。首先我们来一棵树 8 / \ 6 10 / \ / \ 5 7 9 11从上到下打印的顺序为8,6,10,5,7,9,11所以它的入队过程大致为:8先入队列,此时我们需要打印8,然后此时将6,...
2018-08-27 16:19:32
532
原创 二叉树面试题总结
有需要文档的同学可以私聊我,我做成了文档,可以共享,没有时间好好的写成一篇比较好的博客二叉树面试题总结一:基本概念:1:普通二叉树特点: 1:n0=n2+1(n0表示度为0的结点,n2表示度为2的结点); 2:结点个数:n0+n1+n2; 3:二叉树的第 i 层至多有 2^i−1 个结点; 4:深度为 k 的二叉树至多有 2^k−1 个结点; 5:前序遍历规则:根左右; 6:中...
2018-08-27 13:35:13
407
1
原创 输入两个链表,找出它们的第一个公共结点。
输入两个链表,找出它们的第一个公共结点。 /*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/class Solution {public:ListNode* FindFirstCommonNode( ListNode* pHead1, L...
2018-08-26 09:40:38
535
原创 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/cla...
2018-08-26 09:36:10
1128
原创 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 1:题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 2:代码和思路思路:这里我们可以借助队列来实现1:每次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的末尾;2:接下来到队列的头部取出最早进入队列的节点,重复前面的打印工作,直至队列中所有的节点都被打印出来/*s...
2018-08-25 23:12:54
3256
原创 请设计一个算法实现逆序 栈的操作
请设计一个算法实现逆序 栈的操作一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序 栈的操作,但是只能用递归函数来实现,而不能用另外的数据结构。 给定一个栈Stack以及栈的大小top,请返回逆序后的栈。测试样例:[1,2,3,4,5],5 返回:[5,4,3,2,1...
2018-08-25 22:58:55
1189
原创 输入一棵二叉树,求该树的深度。
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/cl...
2018-08-25 22:00:22
579
原创 面试题------编程----正则表达式匹配
正则表达式匹配题目描述:JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?...
2018-08-24 22:35:14
240
原创 面试题----翻转单词顺序列
翻转单词顺序列题目描述:JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?...
2018-08-24 20:59:48
213
原创 面试题-------编程题---找到字符串中第一个只出现一次的那个字符
找到字符串中第一个只出现一次的那个字符题目描述:输入描述:输入一个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入asdfasdfo输出o 思路:1:我们首先定义一个哈希表,哈希表的key值是字符,而值val则是该字符出现的次数;2:然后我们需要对该字符串进行两次扫面,第一次是从头进行扫描,每次扫描到一个字符,就在哈希表...
2018-08-23 23:26:50
1719
原创 面试题---剑指offer---字符串的排列
字符串的排列题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路:a:把字符串分为两部分:第一部分是第一个字符,第二部分是第一个字符以后的部分,然后拿第二个字...
2018-08-23 22:50:14
149
原创 Linux-----软连接和硬链接
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名由于硬链接是有着相同 ino...
2018-08-22 22:04:14
157
原创 面试题---编程----左旋字符串
左旋字符串题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。 时间限制:1s;空间限制:32768K思路:思路都在代码注释里面此次编程用到的函数:revers...
2018-08-22 22:02:33
208
原创 数据结构-----Binary Tree Inorder Traversal (二叉树的中序遍历)
Binary Tree Inorder Traversal (二叉树的中序遍历)题目描述:Given a binary tree, return the inorder traversal of its nodes' values.For example:Given binary tree {1,#,2,3}, 1 \ 2 / 3ret...
2018-08-22 20:09:36
2477
转载 Linux 系统的顶层目录结构
Linux 系统的顶层目录结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 / 根目录 ├── bin 存放用户二进制文件...
2018-08-22 19:49:14
205
原创 数据结构-----Unique Binary Search Trees II (唯一二叉排序树的个数)
Unique Binary Search Trees II 题目描述:(输出用1–n这几个数字能组成的所有BST.)Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.For example,Given n = 3, your program sho...
2018-08-22 16:49:29
1258
转载 卡特兰数
卡特兰数卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为(从第零项开始) : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845...
2018-08-22 16:47:15
109
原创 数据结构------Validate Binary Search Tree 验证二叉搜索树
Validate Binary Search Tree 验证二叉搜索树题目描述:Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows: The left subtree of a node con...
2018-08-22 10:37:21
177
原创 数据结构----Recover Binary Search Tree 复原二叉搜索树
Recover Binary Search Tree 复原二叉搜索树题目描述:Two elements of a binary search tree (BST) are swapped by mistake.Recover the tree without changing its structure.Note:A solution using O(n) space is pr...
2018-08-21 11:38:43
249
原创 数据结构-----判断相同树(Same Tree)
判断相同树(Same Tree)题目描述:Given two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally identical and the nodes have the...
2018-08-21 09:23:19
847
原创 数据结构面试题------剑指offer——————重建二叉树(inorder和postorder)
重建二叉树---------根据中序加后序遍历重建二叉树构造该二叉树的过程如下:1. 根据后序序列的最后一个元素建立根结点;2. 在中序序列中找到该元素,确定根结点的左右子树的中序序列;3. 在后序序列中确定左右子树的后序序列;4. 由左子树的后序序列和中序序列建立左子树;5. 由右子树的后序序列和中序序列建立右子树。下面是我在牛客网oj环境下编译测试通过的代码:/** ...
2018-08-20 23:34:13
876
原创 数据结构------链表------面试题------输入两个链表,找出它们的第一个公共结点。
输入两个链表,找出它们的第一个公共结点我们可以首先遍历两个链表得到它们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个结点。在第二次遍历的时候,在较长的链表上先走若干步,接着再同时在两个链表上遍历,找到的第一个相同的结点就是它们的第一个公共结点。经过分析我们发现两个有公共结点而部分重合的链表,拓扑形状看起来像一个Y,而不可能像X,如下图所示,两个链表在值为6的结点处交汇:...
2018-08-20 13:16:09
680
原创 二叉树的下一个结点
二叉树的下一个结点下面是我在牛客网oj环境下编译测试通过的:/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *next; TreeLinkNode(int x) :val(x), ...
2018-08-20 13:14:57
101
原创 数据结构------二叉树------对称的二叉树
对称的二叉树:下面是我在牛客网oj环境下编译通过的:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/...
2018-08-20 13:13:42
225
原创 数据结构-----Binary Tree Maximum Path Sum 求二叉树的最大路径和
Binary Tree Maximum Path Sum 求二叉树的最大路径和题目要求:Given a binary tree, find the maximum path sum.The path may start and end at any node in the tree.For example:Given the below binary tree, 1 ...
2018-08-20 12:17:39
320
转载 关于 int max=INT_MIN;
int max=INT_MIN;声明整型变量 max, 初值赋 INT_MIN。英文意思。max -- 最大INT_MIN -- 最小整数通常,在此行声明前有#define INT_MIN 数字也可能在头文件中有这个“宏”定义下面是关于这个稍微详细的博客,,,转载的,如有问题,请私聊,谢谢!!!https://blog.csdn.net/beijiwei/article/deta...
2018-08-20 12:16:25
1319
原创 关于银行家算法的那些事
关于银行家算法的那些事:银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构。我在这里就先简单的提一下银行家算法,对它还不是特别了解下面是我在牛客网刷的题:...
2018-08-20 10:32:33
196
原创 数据结构------链表面试题总
数据结构------链表面试题总以下代码是在vs2013下编写的:我们先来看一下测试结果: #pragma once#include<stdio.h>#include<windows.h>#include<stdlib.h>#include<assert.h>//链表的定义typedef int DataTyp...
2018-08-18 22:53:03
205
原创 基于C++编写的简单的日期计算器
基于C++编写的简单的日期计算器以下代码是在VS2013下编译运行的:下面展示我的测试结果:标题代码如下:#include<iostream>using namespace std;#include"vld.h"//这个是检测虚拟内存是否泄露,我在这里安装了vld,所以直接用,包含头文件就好了class Date{public: //构造函数 Date...
2018-08-18 22:18:45
928
原创 输出打印数组---printf函数
输出打印数组---printf函数printf(“%s\n”,str);语句可将字符指针所指的字符串一次性的输出,除了字符类型,其他类型的数组不能用数组名来整体性的输出它的全部元素,只能逐个元素输出,用for循环下面我们来一个验证:#include<stdio.h>#include<windows.h>void f(char **p){ *p +=...
2018-08-18 15:30:50
64610
1
原创 数据结构----二叉树-----后序遍历
后序遍历---递归版本上面树的后序遍历为左右根,遍历结果为:4,7,5,2,6,3,1。注意:vector<int> s的用法:链接地址:https://mp.csdn.net/postedit/81808740下面是我在牛客网oj环境下编译运行的/** * Definition for binary tree * struct TreeNode { *...
2018-08-18 14:57:33
152
原创 关于vector<int>
关于vector<int> vector是一个动态的序列容器,相当于一个size可变的数组。vector的简单使用:声明及初始化:方式一:vector<int> s; 方式二:vector<int> s(10);初始化s容器中10个向量访问里面的元素并增删:如下vector<int>...
2018-08-18 14:57:10
5835
原创 数据结构---二叉树最小深度
【问题描述】: Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.给定一个二叉树,求出它的最小深度,最小深度是从根节点到最近的叶...
2018-08-18 14:30:44
402
原创 栈和队列的异同
栈和队列的异同: 栈和队列都是线性表,都是限制了插入删除点的线性表(或者说是控制了访问点的线性表) 共同点:都是只能在线性表的端点插入和删除 不同点: 栈的插入和删除都在线性表的同一个端点,该点通称栈顶,相应地,不能插入删除的另一个端点通称栈底,其特性是后进先出 队列在线性表的表头插入,表尾删除,表头一般称队头,表尾一般称队尾,其特性是先进先出 相同之处:n个(同类)...
2018-08-18 11:11:26
3363
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人