自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 项目[P2P文件下载器]

项目介绍:该项目完一个在局域网中进行附近文件共享下载功能的工具。能够进行搜索匹配局域网中运行工具的主机,获取到局域网在线的主机列表 能够获取在线主机所共享的文件信息列表 能够对指定主机上的文件进行多进程分块下载来提高传输效率P2P下载器功能流程:局域网中的主机发现 找到局域网中有哪儿些主机在使用P2P下载器 看一下附近的主机,有哪儿些文件时共享的 将这个主机上的共享文件...

2019-08-09 17:42:07 1704

原创 用Python写一个简单的爬虫

什么是爬虫?网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。实现一个爬虫的基本步骤:1.根据需要构造一个HTTP请求(涵盖指定的rl)2.解析得到的相应(从HTML中解析出需要的内容) a)要从菜单页中获取到每个章节中对应的a标签中的连接 b)从...

2019-07-19 16:19:06 645

原创 朋友圈问题

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

2019-07-10 15:17:50 1365

原创 剑指offer :二叉搜索树

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。解析:首先,要求按照节点数值的大小顺序的第几小的几点值进行查找因此是有序的,这刚好是中序遍历的特点我的想法就是中序遍历二叉树,同时设置一个变量值,每遍历过一个节点,节点+1如果变量值等于k 那么跳出循环输出当前节点即可非...

2019-05-10 13:45:51 3955

原创 剑指offer : 把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。就是二叉树的 层序遍历首先必须判空,然后利用辅助队列进行处理每次push入一个根节点,依次判断左右节点是否为空,不为空则压入队列,进行下一步处理class Solution {public: vector<vector<int> > Print(TreeNode* ...

2019-05-09 21:13:13 161

原创 动态规划问题几种经典例题

动态规划问题实际就是记录之前的一些重复的子问题,以避免重复问题的方法,是一种以空间换时间的方法1.最长递增子序列:链接:https://www.nowcoder.com/questionTerminal/585d46a1447b4064b749f08c2ab9ce66来源:牛客网对于一个数字序列,请设计一个复杂度为O(nlogn)的算法,返回该序列的最长上升子序列的长度,这里的子序列定...

2019-05-09 20:19:24 6235

原创 网络基础1

“协议”是一种约定计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式.协议是什么呢?举个例子就是你和同学暑假相约一起去海南度假,由于并不住在一起,你们就相约在机场相见,那么这样的话,相约在机场见面就是一个你和同学之间的协议。只要通信的两台主机, 约定好协议就可以了么?答案...

2019-05-08 19:27:16 182

原创 剑指offer:按之字形顺序打印二叉树

题目描述:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。按之字形打印二叉树:也就是说根节点打印之后,第二行从右向左打印,第三行从左向右打印以此类推如图: 因此我们利用两个栈进行处理第二层从右向左打印 就相当于 第一层的子树以先左后右入栈时的出栈顺序第三层从左向右打印...

2019-04-29 16:45:40 152

原创 剑指offer:对称的二叉树

题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的对称的二叉树,说明,左右子树要完全相同确定递归出口:如果根节点为空的情况,返回true ,空树也是对称树 左右子树一个为空另一个不为空,返回false,不对称递归处理class Solution {publi...

2019-04-29 15:14:22 123

原创 剑指offer: 二叉树的下一个节点

题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。中序遍历 : 左根右 的遍历顺序 会得到一个有序数组因此我们需要判断当前节点的各种情况情况一:情况二:情况三:struct TreeLinkNode {int val;struct TreeLink...

2019-04-28 18:51:11 157

原创 剑指offer: 删除链表中重复的节点

题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5存在重复的节点,但不确定有几个重复的节点,因此可以保存当前的节点值,然后逐个比较将重复的节点全部删除即可。用一个result链表来保存删除后的不重复...

2019-04-28 18:03:54 126

原创 剑指offer: 链表中环的入口节点

题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。快慢指针追赶问题:定义快慢指针 快指针每次走两步,慢指针每次走一步fast = fast->next->next;slow = slow->next;这样的话,如果链表存在环,那么fast指针比slow指针先入环 ,并且slow指针没有走完环一圈之前,fast指针就可以追上sl...

2019-04-26 16:32:22 143

原创 剑指offer: 字符流中第一个不重复的字符

题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。如果当前字符流没有存在出现一次的字符,返回#字符。用hashtable来存储每个字符出现的次数,然后将次数为1 的输出class Solution{pu...

2019-04-25 21:24:16 126

原创 剑指offer:正则表达式

题目描述:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配首先 因为下一位的出现的可能性有 字符 * 。 三种情况因此考虑递归...

2019-04-25 20:46:50 360

原创 剑指offer : 构建乘积数组

题目描述:给定一个数组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]。不能使用除法。B[0] 1 A[1] A[2] A[3] A[4] A[5] B[1] A[0] 1 A[2] A[3] A[4...

2019-04-25 19:31:44 142

原创 剑指offer : 数组中重复的数

题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。开始我考虑的是,先将数组排序,然后逐个比较,如果有相等的,就说明数组有重复的数然后考虑hash的方法,效率...

2019-04-25 18:05:48 139

原创 剑指offer: 将字符串转换成整数

题目描述:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入+2147483647 1a33输出2147483647 0我们要先判断字符串首位的正负关系如果在字符串内部出现+-号 那么不符合...

2019-04-25 17:07:19 169

原创 剑指offer: 孩子们的游戏(圆圈中剩下的最后的数)

题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去......

2019-04-17 21:11:16 139

原创 剑指offer: 扑克牌顺子

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

2019-04-17 20:16:27 152

原创 剑指offer : 反转单词顺序列

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

2019-04-16 18:34:45 162

原创 剑指offer:左旋字符串

题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!方法一:直接截取两个字符串,然后拼接即可class Solution {public:...

2019-04-16 17:58:20 1547

原创 剑指offer: 和为S的两个数字

题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。首先,题目告诉我们是一个递增排序的数组,因此我们定义首尾指针:first 指向数组头元素,end 指向数组末元素由于递增数组的特性可知,距离越远的两个元素乘积越小。代码:class Solution {public: v...

2019-04-16 17:05:12 136

原创 剑指offer : 和为S的来连续正数数列

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

2019-04-15 13:28:20 188

原创 剑指offer : 数组中只出现一次的数字

题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。异或的特点: 0 ^ 0 =0 ,0 ^ 1 = 1,1 ^ 0 = 0,1 ^ 1 =0 ,任何数字异或自己都等于零 也就是说如果一个数组所有元素异或之后的结果为零的话,就说明该数组中没有单独出现一次的数字得到最后异或的值后,确定1出现的位数,按照1出现的位数,...

2019-04-13 17:18:42 149

原创 剑指offer : 平衡二叉树

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树,且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。class Solution {public: int TreeDepth(TreeNode* pRo...

2019-04-13 15:55:13 159

原创 剑指offer: 二叉树的深度

题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:分别递归求左右子树的深度,然后比较得到较大的那个值,再加1;struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x)...

2019-04-13 15:38:53 107

原创 剑指offer: 数字在排序数组中出现的次数

题目描述:统计一个数字在排序数组中出现的次数。暴力破解法:遍历数组即可class Solution {public: int GetNumberOfK(vector<int> data, int k) { int count = 0; for (int i = 0; i < data.size(); i++) { if (data[...

2019-04-13 15:19:10 104

原创 剑指offer : 两条链表的第一个公共节点

题目描述:输入两个链表,找出它们的第一个公共结点。如下图所示:两条链表如果出现公共节点,那么他们自公共节点之后的节点完全相同,,因此这两条链的结构是一个类Y型,但公共节点之前的节点却不能保证,因此我们在考虑时要进行长度的判断,然后让较长的链先走长度差个单位,然后两条链处在同一起点并行向后走,得到公共节点则返回。class Solution{public: int GetLeng...

2019-04-13 14:39:17 129

原创 剑指offer: 第一个只出现一次的字符

题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).用一个哈希表来记录每个字符出现的次数,然后返回第一个出现次数为1的字符。class Solution {public: int FirstNotRepeatingChar(string str) { ...

2019-04-13 13:48:57 97

原创 剑指offer : 丑数

题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。由丑数的定义我们可以知道丑数都是由*{2,3,5}推导出来的1*{2,3,5}得到{2,3,5}*{2,3,5}得到{4,6,10,6,9,10,10,15,25}因此可以看到 单纯去乘...

2019-04-12 17:37:05 94

原创 剑指offer:把数组排成最小的数

题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。关键点是to_string函数的使用,每次将一个数字转换为字符串的形式。然后尾插入string类型的vector中。我的思路就是不断组合比较的过程:比如:{3,32,321} ...

2019-04-12 15:22:25 154

原创 剑指offer : 整数中1出现的次数

题目描述:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。我的思路就是遍历计算每个数中1出现的次数,然后相加。暴力解决法:...

2019-04-12 14:49:55 145

原创 剑指offer:连续子数组的最大和

题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...

2019-04-11 17:32:54 127

原创 剑指offer : 最小的K个数

题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。先排序,然后直接打印K个元素就好。class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { ...

2019-04-08 21:37:05 129

原创 剑指offer : 数组中出现次数超过一半的数字

题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。利用数组的特性来考虑,如果数组中一个数的出现次数超过一半,那么这个数组的中位数一定等于这个数class Solution {public: int Mo...

2019-04-08 21:00:46 111

原创 剑指offer: 字符串的排列

题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。以字典序的顺序打印就意思是以字典中的字母排序进行排序:abcdefg.....假如输入字符串为abcd的话:第一次以a为起点,将a与b交换 得到 bacd 第二次以b为起点,将b与c交换,得...

2019-04-08 18:51:47 106

原创 剑指offer: 二叉搜索树的后序遍历

题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。假设输入的数组为 5,7,6,9,11,10,8由后序遍历 左右根的特点来看,数组的最后一个就是根的值而二叉树中根的左子树一定比根小,根的右子树一定比根大我们可以先推导一遍:第一次循环:找比8小的: 5,7,6 ...

2019-04-03 21:35:15 109

原创 剑指offer : 二叉搜索树与双向链表

题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:首先,二叉搜索树的中序遍历就是有序的,因此我们借用中序遍历的概念二叉搜索树的特点: 左子树的值 < 根节点的值 < 右子树的值因此只要将左子树最右边的节点与根节点与右子树最左侧的节点连接就可以得到一个有序链表。先对树进...

2019-04-03 20:47:54 182

原创 剑指offer:二叉树中和为某一个值的路径

题目描述:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)这种题目我们考虑的就是递归的做法:首先创建一个二维数组result来保存满足条件路径创建一个一维数组来保存当前路径每当一条路径满足要求,就将当前路径存入result数组...

2019-04-02 21:36:30 126

原创 剑指offer :从上往下打印二叉树

题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。其实就是二叉树的层序遍历:遍历结果: A B C D E F G H先存进去的节点先打印,这样的特性不就和队列FIFO的特性相同了吗?处理的方法就是将二叉树的节点从上到下,从左到右的存入队列中,然后逐个打印。struct TreeNode { int val; struct TreeNode ...

2019-03-29 19:55:49 176

空空如也

空空如也

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

TA关注的人

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