自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(420)
  • 收藏
  • 关注

原创 序列化二叉树

题目:请实现两个函数,分别用来序列化和反序列化二叉树分析:序列化就是将一颗二叉树根据前序遍历序列化成字符串,反序列化就是根据一颗二叉树的先序遍历顺序将它重建成一颗二叉树。注意stoi()函数将字符串中第一个数字串转为整型,即遇到逗号啥的就停止,to_string()将一个整型转为字符串对象.class Solution {public: //序列化 //将...

2019-06-23 14:59:52 171

原创 把二叉树打印成多行

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。分析:借助队列,将每一层放在对应二维数组下表中,当结点从队列中出来时,将下一层带进去,并且层数要在上一层的基础上加1class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) { ...

2019-06-23 10:43:16 104

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

题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。分析://借助队列,将每一层元素放在对应不同的二维数组层中,最后将偶数层反转以下即可。class Solution {public: vector<vector<int> > Print(Tr...

2019-06-23 10:33:17 253

原创 对称的二叉树

题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。分析:方法(1):先写一个判断两颗数是否对称的函数(p1和p2,就要判断p1的左子树和p2的右子树,p1的右子树和p2的左子树是否相同),然后将这棵树的左右子树,传给这个函数的p1和p1class Solution {public: //判断以两...

2019-06-23 10:13:00 112

原创 二叉树的下一个节点

题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针分析:1.如果该节点有有右子树,则下一个节点就是右子树的最左结点(中序:左根右)2.如果该节点没有右子树如果它是父亲的左孩子,则下一个就是父亲;如果它是父亲的右孩子,则要一直向上找到父亲的父亲,直到这个父亲是它父亲的左孩子,此时下一个就是它父...

2019-06-23 09:35:25 156

原创 并查集

1、并查集的概念并查集是由一个数组、两个函数(查找一个数的根、合并路线)组成,常用来解决一些不相交集合的合并与查找问题。2.并查集实现原理(下文给的图的n都取值为10)(1)元素初始化给定n个元素组成的一个数组,数组的下标依次为0,1,2,...,n-1;将数组中的每一个数都初始化为-1;UnionFondSet(int n){ v.resize(n,-1);...

2019-06-22 20:04:54 1720

原创 http协议

1.http协议介绍2.协议头格式 (1)请求格式 a.常见请求方法 b.GET和POST区别 (2)响应格式3.响应状态码4.http协议特点1.http协议介绍HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80...

2019-06-22 19:58:30 189

原创 malloc底层实现

1.结论2.背景3.分配原理4.具体情况 (1)malloc()小于128k的内存时,使用brk系统调用在堆上申请内存 (2)malloc()大于128k的内存时,使用mmap系统调用在栈与堆之间的映射区分配内存1.结论:1)当开辟的空间小于 128K 时,调用 brk()函数,malloc 的底层实现是系统调用函数 brk(),其主要移动指针 _e...

2019-06-22 19:39:31 268

原创 朋友圈

题目:班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋...

2019-06-22 17:03:08 305

原创 岛屿数量

题目:给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3分析:用队列实现“广度优先”...

2019-06-22 17:01:35 590

原创 LRU缓存机制

题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删...

2019-06-22 17:00:15 356

原创 linux下的0号进程和1号进程

系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。整个linux系统的所有进程也是一个树形结 构。树根是系统自动构造的,即在内核态下执行的0号进程,它是所有进程的祖先。由0号进程创建1号进程(内核态),1号负责执行内核的部分初始化工作及进 行系统配置,并创建若干个用于高速缓存和虚拟主存管理的内核线程。随后,1号进程调用execv...

2019-06-21 16:13:20 1569

原创 N叉树的层序遍历

题目:给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个3叉树:返回其层序遍历:[ [1], [3,2,4], [5,6]]分析:借助队列,队列中存放当前节点以及当前节点的层数,当它出来的时候,将该节点对应的值放在对应层,并且将其所有的孩子带进去,并且层数放的是下一层,为出来往vector中放的时候能...

2019-06-21 15:12:53 305

原创 在每个树行中找最大值

题目:您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9输出: [1, 3, 9]分析:借助队列,将每一层的的节点以及孩子放在一个vector中,孩子永远放在当前节点的下一层,然后求出每一个vector的最大值class ...

2019-06-21 14:57:48 205

原创 二叉树镜像

题目:题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11...

2019-06-21 14:10:52 92

原创 uname -a命令

uname -a:用于显示系统信息。$ uname -aLinux ubuntu3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 27 17:25:43 UTC 2012 i686 i686 i386GNU/Linux具体如下:$ uname --helpUsage: uname[OPTION]...Print certain s...

2019-06-20 23:18:30 14706

原创 前k个高频单词

题目:给一非空的单词列表,返回前k个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为...

2019-06-20 21:11:41 707 2

原创 前k高频元素

题目:给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) ,n...

2019-06-20 20:18:29 126

原创 二叉树的层平均值

题目:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入: 3 / \ 9 20 / \ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意:节点值的范围在32位有符号整数范围内。分析:借助队列...

2019-06-18 20:39:10 490

原创 二叉树的层次遍历

题目:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]分析:采用队列实现,队列中元素是当前结点和当前结点下标所...

2019-06-18 17:12:58 366

原创 用队列实现栈

题目:使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty这些操作是合法的。你所使用的语言也许不支持队列。你可以使用...

2019-06-18 16:03:25 109

原创 用栈实现队列

题目:使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 ...

2019-06-18 14:59:57 223

原创 二叉树的最近公共祖先

题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root...

2019-06-18 14:43:11 435

原创 二叉树的前序遍历、中序遍历、后续遍历(非递归实现)

题目:二叉树的前序遍历(非递归)分析:1.访问所有左路结点,并且入栈2.取出栈顶结点的右子树,如果它不为空就模拟递归,即将其赋给cur上去(即以该节点访问所有左路结点...),否则就取下一个栈顶元素3.直到当前结点为空(栈顶右子树),并且栈为空说明所有元素已访问过class Solution {public: vector<int> preorde...

2019-06-17 17:01:58 4004

原创 栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)分析:class Solution {public: bool...

2019-06-17 15:24:06 85

原创 最小栈

题目:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。pop()-- 删除栈顶的元素。top()-- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack...

2019-06-17 15:17:15 100

原创 逆波兰表达式求值

题目:根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + ...

2019-06-17 08:44:10 409

原创 linux下的5种IO模型

Linux高级IO五种IO模型 阻塞IO:内核在准备好数据之前,系统调用会一直等待,直到内核准备好数据,再将数据报从内核拷贝到用户空间,系统调用 才会成功返回。所有的套接字默认都是阻塞方式,如:recvfrom /sendto 非阻塞IO:若内核未准备好数据,系统调用会直接返回,并返回EWOULDBLOCK错误码。这就需要程序员反复尝试读写文件描述符,也称这种方式为“轮询...

2019-06-14 15:25:13 195

原创 找出字符串中第一个只出现一次的字符(题目已经更新)

题目:分析:映射法,最后出去记得判断#include <iostream>#include <string>using namespace std;int main(){ string s; while(getline(cin, s)) { int count[256]={0}; ...

2019-06-13 19:55:32 1992

原创 小易的升级之路

题目:分析:#include <iostream>#include <vector>using namespace std;//求两个数的最大公约数int max_com(int x, int y){ while(x%y!=0) { int left=x%y;//余数 x=y; ...

2019-06-13 19:51:01 228

原创 洗牌算法

题目:分析:123456洗一次牌,相当于将123456分成两部分:123 和 456 ,然后分别从两部分的起始端取数字,用一个空的vector尾插接收,如1 4,2 5,3 6这就是一次洗牌结果,然后如果还要继续洗的话,一定继续在这个洗好的基础上进行洗。#include <iostream>#include <vector>using name...

2019-06-12 16:21:59 159

原创 MP3光标位置

题目:分析:用三个变量保存当前列表的顶部、底部、当前光标位置。n小于4时只考虑当前光标位置在顶部并U,当前光标位置在底部并D;而当n大于等于4时,除了以上情况,还要考虑当前光标等于顶部时并U,或者当前光标在底部时并D,这两种情况要考虑翻页。#include <iostream>using namespace std;int main(){ int ...

2019-06-12 15:54:16 492

原创 公共子串计算

题目:分析:#include <string>#include <iostream>using namespace std;int main(){ string s1; string s2; while(cin>>s1>>s2) { int max = 0; ...

2019-06-11 21:54:35 442

原创 汽水瓶

#include <iostream>#include <vector>using namespace std;int GetRet(int num){ int blank_bot = num; int drink = 0; while(blank_bot >= 3) { drink ...

2019-06-10 22:08:12 2328

原创 查找两个字符串a,b中的最长公共子串

方法一:直接遍历。#include <iostream>#include <string>#include <vector>using namespace std;int main(){ string s1; string s2; while(cin>>s1>>s2) { int len1 ...

2019-06-10 22:07:02 1362

原创 字符串通配符

题目:分析:当前对应字符相同,则进行下一组匹配;当前字符不同,如果模式串是?,则匹配一个,如果当前模式串是*,则匹配-个、1个、多个。#include <iostream>#include <string>using namespace std;bool match(const char* pattern, const char* str...

2019-06-08 08:28:44 2377

原创 统计每个月的兔子数

题目:分析:斐波那契数列问题#include <iostream>#include <vector>using namespace std;int main(){ int month; while(cin>>month) { //这个月的兔子数=(上个月的老兔子+上个月的新兔子)所有兔子生...

2019-06-08 08:26:27 153

原创 超长整数相加

题目:分析:从两个int main(){ string s1; string s2; while(cin>>s1>>s2) { int end1=s1.size()-1; int end2=s2.size()-1; int carray=0;//保存进位 ...

2019-06-07 09:42:42 378

原创 杨辉三角变形

题目:分析:先构造该变形的杨辉三角,再求值#include <iostream>#include <vector>using namespace std;int main(){ int n;//n行 while(cin>>n) { vector<vector<int>&gt...

2019-06-07 09:41:12 161

原创 字符串的排列

题目:题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。分析:递归的思想类似归纳思想,首先考虑递归一定要学会简化思维,不能想的太深,而是只考虑一个层次的变化;...

2019-06-07 08:12:35 407

空空如也

空空如也

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

TA关注的人

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