自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客网-2018校招真题-安置路灯

题目:题目描述小Q正在给一条长度为n的道路设计路灯安置方案。为了让问题更简单,小Q把道路视为n个方格,需要照亮的地方用’.'表示, 不需要照亮的障碍物格子用’X’表示。小Q现在要在道路上设置一些路灯, 对于安置在pos位置的路灯, 这盏路灯可以照亮pos - 1, pos, pos + 1这三个位置。小Q希望能安置尽量少的路灯照亮所有’.'区域, 希望你能帮他计算一下最少需要多少盏路灯。...

2019-07-28 22:00:30 173

原创 牛客网-2018校招真题-疯狂队列

题目:题目描述小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身...

2019-07-09 12:10:49 252

原创 牛客网-2018校招真题-堆棋子

题目:题目描述小易将n个棋子摆放在一张无限大的棋盘上。第i个棋子放在第x[i]行y[i]列。同一个格子允许放置多个棋子。每一次操作小易可以把一个棋子拿起并将其移动到原格子的上、下、左、右的任意一个格子中。小易想知道要让棋盘上出现有一个格子中至少有i(1 ≤ i ≤ n)个棋子所需要的最少操作次数.输入描述:输入包括三行,第一行一个整数n(1 ≤ n ≤ 50),表示棋子的个数第二行为n个...

2019-07-08 19:52:46 258

原创 牛客网-2018校招真题-独立的小易

题目:题目描述小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。输入描述:输入包括一行,四个整数...

2019-07-08 11:39:58 219

原创 牛客网-2018校招真题-操作序列

题目:题目描述小易有一个长度为n的整数序列,a_1,…,a_n。然后考虑在一个空序列b上进行n次以下操作:1、将a_i放入b序列的末尾2、逆置b序列小易需要你计算输出操作n次之后的b序列。输入描述:输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。输出描述:...

2019-07-05 15:20:42 206

原创 牛客网-2018校招真题-交错01串

题目: 题目描述如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: “1”,“10101”,"0101010"都是交错01串。小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。输入描述:输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只...

2019-07-05 09:20:30 120

原创 牛客网-2018校招真题-等差数列

题目:题目描述如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列输入描述:输入...

2019-07-04 22:30:59 158

原创 牛客网-2018校招真题-六一儿童节

题目: 六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。思路: 要使得最多的孩子上台表演,就需要分别将h[i]和w[j]从...

2019-06-25 15:57:50 230

原创 牛客网-2018校招真题-大整数相乘

题目: 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。思路: 错位相乘并相加。#include<iostream>#include<string>#include<vector>using namespace std;string mul(string num1, string num2){ s...

2019-06-25 15:12:05 142

原创 牛客网-2018校招真题-最大乘积

题目: 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)思路: 不论给定的数组是什么,最大的乘积只有三种情况 1.三个最大的数的乘积(都是正数);2。三个最小的数的乘积(都是负数);3.最小的两个负数和最大正数的乘积(正负数都有)。选出给定数组中的最大的三个数和最小的三个数即可。#include<iostre...

2019-06-21 10:55:10 183

原创 牛客网-剑指office-机器人的运动范围

题目: 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路: 和上道题类似。首先写一个函数计算一个数...

2019-06-20 16:20:10 120

原创 牛客网-剑指office-矩阵中的路径

题目: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串...

2019-06-20 10:30:24 123

原创 牛客网-剑指office-滑动窗口的最大值

**题目:**给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2...

2019-06-19 14:31:43 97

原创 牛客网-剑指office-数据流中的中位数

**题目:**如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。**思路:**首先要理解STL中heap(堆)的用法。参考https://blog.csdn.net/...

2019-06-19 11:44:37 110

原创 牛客网-剑指office-二叉搜索树的第K个节点

**题目:**给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。**思路:**中序遍历二叉树,遍历的过程中加入一个计数器,当到达第k个时,输出即可。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *...

2019-06-18 19:35:46 105

原创 牛客网-剑指office-序列化二叉树

**题目:**请实现两个函数,分别用来序列化和反序列化二叉树**思路:**首先要理解序列化和反序列化的意思。序列化:二叉树被记录成文件的过程叫作二叉树的序列化反序列化: 通过文件内容重建原来的二叉树过程叫做二叉树反序列化前序遍历二叉树,将结果存入vector向量中,当遇到节点Wie空的时候,加入特殊符号‘#’,并且退出递归。然后进行类型转换。然后进行反序列化,先进行类型转换,然后递归构造...

2019-06-18 18:53:36 172

原创 牛客网-剑指office-把二叉树打印成多行

**题目:**从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。**思路:**二叉树的层次遍历。利用两个队列将每行的节点分隔开来存储即可。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...

2019-06-18 16:12:22 154

原创 牛客网-剑指office-按之字形顺序打印二叉树

**题目:**请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。**思路:**利用两个栈隔行存储二叉树的节点。一个栈从左往右依次存储一行的节点,另外一个栈从右往左依次存储下一行的节点即可。/*struct TreeNode { int val; struct TreeNode *le...

2019-06-18 16:01:12 111

原创 牛客网-剑指office-对称二叉树

题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:我们只需要递归比较 左子树的左子树与右子树的右子树 左子树的右子树 与 右子树的左子树 是否相等即可。/*struct TreeNode { int val; struct TreeNode *left; struct Tree...

2019-06-16 22:27:28 127

原创 牛客网-剑指office-二叉树的下一个节点

**题目:**给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。**思路:**当前节点的下一个节点分为两种情况。(1)如果一个节点有右子树,那么该节点的下一个节点就是它的右子树中的最左的节点。(2)如果该节点没有右子树,我们就需要向上遍历,直到找到当前节点为他父节点的左节点,那么下一个节点就是找到的这个父节点...

2019-06-15 13:52:25 107

原创 牛客网-剑指office-删除链表中重复的节点

**题目:**在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。**思路:**利用哈希表记录节点出现的次数。class Solution {public: ListNode* deleteDuplication(List...

2019-06-14 15:08:46 109

原创 牛客网-剑指office-链表中环的入口节点

**题目:**给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解法一:思路:建立一个哈希表,将遍历过的节点存储起来,当再次遍历到此几点时,输出即可。时间复杂度和空间复杂度都为O(n)。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : v...

2019-06-13 22:51:36 119

原创 牛客网-剑指office-字符流中第一个不重复的字符

**题目:**请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。思路:利用一个向量存储字符流中的数据,用哈希表存储字符出现的次数。class Solution{public: //Insert one char from st...

2019-06-13 22:17:56 77

原创 牛客网-剑指office-表示数值的字符串

题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是思路:用三个变量num,dot,nume分别标记标记数字、小数点、e或者E是否出现过。遍历一遍该字符串,当遇到数字的时候,将num设定为1.当遇到小...

2019-06-12 10:40:42 104

原创 牛客网-剑指office-正则表达式匹配

题目:请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"aba"均不匹配思路:根据pattern中的下一个字符是不是‘’分为两种情况考虑。然后利用递归处理即可。class S...

2019-06-11 15:32:59 103

原创 牛客网-剑指office-构建乘积数组

**题目:**给定一个数组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]。不能使用除法。思路:暴力解法。class Solution {public: vector<int> multiply(const vector<int>& A) { ...

2019-06-11 12:59:40 141

原创 牛客网-剑指office-数组中重复的数字

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路:我们可以从头开始扫描这个数组中的每个数字。当扫描到小标为 i 的数字时,首先比较这和数字(用m表示)是否和i是否相等。如...

2019-06-10 15:57:16 113

原创 牛客网-剑指office-把字符串转换成整数

题目:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0class Solution {public: int ...

2019-06-10 13:09:46 93

原创 牛客网-剑指office-不用加减乘除做加法

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:位运算。异或可以计算不考虑进位的加法,与运算可以计算进位,最后把结果再做异或运算,即可得出答案。class Solution {public: int Add(int num1, int num2) { int sum, carry; do{ sum = num1^num2; ...

2019-06-10 12:42:11 99

原创 牛客网-剑指office-求1+2+2+...+n

题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:递归求和。class Solution {public: int Sum_Solution(int n) { int sum =n; sum &&(sum+=Sum_Solution(n-...

2019-06-10 09:59:58 138

原创 牛客网-剑指office-孩子们的游戏(圆圈中最后剩下的数)

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

2019-06-09 13:48:57 112

原创 牛客网-剑指office-打扑克牌顺子

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

2019-06-09 11:35:48 118

原创 牛客网-剑指office-翻转单词顺序列

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

2019-06-09 11:11:52 79

原创 牛客网-剑指office-左旋转字符串

题目:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:在原字符串后面将原字符串接一遍,然后从第n位开始,截取原字符串长度的字符串输出即可。class...

2019-06-08 23:21:08 86

原创 牛客网-剑指office-和为S的两个数字

题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。对应每个测试案例,输出两个数,小的先输出。思路:从数组的两边选取两个数,下标分别为l和r。当和大于sum时,–r,当和小于sum时,++l。遇到第一个相同的情况时,输出即可。这两个数的乘积一定是满足条件中乘积最小的。因为:周长相同时(和),正方形的面积(乘积)大于...

2019-06-08 23:06:25 80

原创 牛客网-剑指office-和为S的连续正数序列

题目:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?思路:我们用两个变量small和big分别记录序列的最小值和最大值,并...

2019-06-08 16:56:41 88

原创 牛客网-剑指office-数组中只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:首先我们会想到一个数组中只有一个数字出现一次的那道题。我们可以用异或的思想。但这道题中有两个数字都只出现了一次,我们仍然可以利用异或的思想。我们先需要将原始数组分为两个数组,并且需要同时满足:1、两个只出现一次的数字出现在不同的数组中。2、两个相同的数字不能被分在不同的数组中。我们可以首先...

2019-06-08 13:08:23 111

原创 牛客网-剑指office-平衡二叉树

题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路:利用上道题二叉树的深度的函数,每次比较左右节点的深度即可。但是这种方法需要重复遍历节点多次,使得时间效率不高。class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot == nullptr) ...

2019-06-07 16:33:13 87

原创 牛客网-剑指office-二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:递归。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(N...

2019-06-07 11:50:42 131

原创 牛客网-剑指office-数字在排序数组中出现的次数

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

2019-06-07 11:37:09 79

空空如也

空空如也

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

TA关注的人

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