
面试前编程整理
sheng_max
这个作者很懒,什么都没留下…
展开
-
旋转矩阵
如题:将一个矩阵旋转,可分为顺时针和逆时针 如将矩阵123,456,789顺时针旋转则为741,852,963;逆时针旋转则为369,258,147。 做法:将矩阵顺时针旋转,实际上是将原矩阵的列从下到上变成目的矩阵的行从左到右,那就两层循环,第一层循环矩阵的列,第二层倒着循环矩阵的行,每取一列,将这行压入到新矩阵的第一行;同理,将矩阵逆时针旋转,还是定义两层循环,第一层控制列号,顺序为从大到小原创 2016-08-27 15:31:55 · 736 阅读 · 0 评论 -
牛客网刷题笔记--左右最值最大差
题目要求:给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K],右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例:[2,7,3,1,1],5返回:6刚开始做这个题,看题目中“左部分中原创 2016-06-15 15:11:01 · 1210 阅读 · 0 评论 -
牛客网刷题笔记
本来想在牛客网上刷完一道在线编程题后就写以下体会笔记,可是找了半天都没找到在哪里写东西,无奈,我就只好来优快云上写了,只是想写而已,刚开始写,肯定会很不理想,但是没关系,慢慢写吧,总会有提高的。今天在牛客网刷了一道求最长字串是回文数的长度,刚开始的时候,我用两个指针,一个指前边,一个指后边,对比两个指针指向的值,相等则前边的指针后移,后边的指针前移,然后再判断是否相等,如果不相等,那么就不是原创 2016-06-15 10:40:22 · 2924 阅读 · 0 评论 -
删除链表A中与链表B结点相同的结点
题目描述: 有两串链表表示为A和B,删除链表A中的结点,满足删除条件的结点是该结点与链表B中某结点的值相同。 代码如下:# include <iostream>using namespace std;typedef struct List{ int value; struct List * next;} pList;int deleteNode(pList *, pList*原创 2016-09-05 16:47:03 · 742 阅读 · 0 评论 -
最多买多少只龙虾
题目描述: 说小明的妈妈给了小明一定钱数,希望他尽可能多地买龙虾。小明做了市场调查,将市场上的小龙虾单价和总数放在一个名叫做data_type的数据结构中,你能帮帮小明计算出这笔钱能最多买多少只龙虾吗? 定义一个float getAns(int money, vector &Data)函数,返回值为龙虾个数,结果保留两位小数。其中Data数组为小明做的市场调查结果。注意:若要对D原创 2016-09-05 18:48:15 · 309 阅读 · 0 评论 -
笔试题--求幸运数个数
题目描述: 定义一个函数f(x)表示x这个数用十进制写出各个数位的数字之和,比如:f(123) = 1 + 2 + 3 = 6;定义一个函数g(x)表示这个数用二进制写出各个位数上的数字之和,比如:123用二进制表示为1111011,那么g(1111011) = 1 + 1 + 1 + 1 + 0 + 1 + 1 = 6。若有一个数x有f(x) = g(x),则说明这个数是幸运数。若给定一个范围原创 2016-09-06 22:39:45 · 1381 阅读 · 0 评论 -
在线笔试-城市划分-求住宅个数
题目要求:为了进行城市规划,需要技术安一个居民区的住宅数目。该居民区的俯视图已经制作好并划分成nxm个网格。如果某个网格具有屋顶的一部分,则向其赋值1,如果是空的,则赋值为0。由值为1的相邻网络单元组成的蔟认定为一个单独的住宅。对角放置的值为1的网格则不被视为属于同一住宅或屋顶。 函数countHome的输入包括一个二维整数数组grid及其维度n和m, 其中,n和m分别表示输入数组grid的行和列原创 2016-09-14 16:39:25 · 1015 阅读 · 3 评论 -
网易笔试编程-统计回文
题目描述: “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。 例如: A =原创 2016-11-29 08:07:00 · 742 阅读 · 0 评论 -
网易笔试编程-饥饿的小易
题目描述: 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃。最开始小易在一个初始位置x_0。对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者8 * x + 7。因为使用神秘力量要耗费太多体力,所以它只能使用神秘力量最多100,000次。贝壳总生长在能被1,000,000,007整除的位置(比如:位置0,位置1,000,000,007,位置2,000,000,01原创 2016-11-30 17:05:32 · 1106 阅读 · 0 评论 -
网易笔试编程-两种排序方法
题目描述: 考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如: “car” < “carriage” < “cats” < “doggies < “koala” 2.根据字符串的长度排序。例如: “car” < “cats” < “koala” < “doggies” < “carriage” 考拉想知道自己的这原创 2016-12-01 11:50:12 · 462 阅读 · 0 评论 -
网易笔试编程-小易喜欢的单词
题目描述: 小易喜欢的单词具有以下特性: 1.单词每个字母都是大写字母 2.单词没有连续相等的字母 3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。 例如: 小易不喜欢”ABBA”,因为这里有两个连续的’B’ 小易不喜欢”THETXH”,因为这里包含子序列”THTH” 小易不喜欢”ABACADA”,因为这里包含子序列”AAAA”原创 2016-12-02 09:52:43 · 966 阅读 · 0 评论 -
网易笔试编程-Fibonacci数列
Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+原创 2016-12-02 16:55:41 · 1042 阅读 · 0 评论 -
网易笔试编程-数字游戏
小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和的原创 2016-12-02 17:28:54 · 699 阅读 · 0 评论 -
网易笔试编程题-混合颜料
题目描述:你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本着勤原创 2016-11-26 14:14:15 · 835 阅读 · 1 评论 -
网易笔试编程题-幸运的袋子
题目描述: 一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。 例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3 你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计原创 2016-11-26 15:40:22 · 1228 阅读 · 0 评论 -
网易笔试编程题-不要二
题目描述: 二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。 对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为: ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根 小易想知道最多可以放多少块蛋糕在网格盒子里。 输入描述: 每原创 2016-11-26 17:03:31 · 748 阅读 · 0 评论 -
牛客网刷题笔记---求最短未排序子序列
题目是:对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。给定一个整数数组A及它的大小n,请返回最短子数组的长度。测试样例:[1,5,3,4,2,6,7],7返回:4在考虑这道题时,思路是,先将该未排序的数组进行排序,然后将排好序的和未排好序的数组串进行比较,前后各放一个指针,前边的指针所指的值相同,则向后移动直到不相同为止,后边的向前移动,直至不相同原创 2016-06-16 10:47:05 · 1058 阅读 · 0 评论 -
牛客网刷题---二维数组中的查找(剑指offer)
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 输入描述:array: 待查找的二维数组arrget:查找的数字输出描述:查找到返回true,查找不到返回false我是从右上角开始差找的。但有两点没考虑到原创 2016-06-20 17:56:49 · 1702 阅读 · 0 评论 -
牛客网刷题--剑指offer(重建二叉树)
题目描述是这样的: 给你一个树的前序遍历和中序遍历,希望你能重建这个二叉树的结构,题目还给了一个例子:某二叉树的前序遍历为{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历{4, 7, 2, 1, 5, 3, 8, 6},重建二叉树并返回该二叉树的根指针。 这里,我们需要清楚,要想重建二叉树,我们必须已知某二叉树的中序遍历序列,也就是说,只要知道前序,中序或这中序,后序遍历序列原创 2016-06-29 16:42:36 · 1877 阅读 · 0 评论 -
折纸问题
题目描述: 请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。 给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为”down”,若为上折痕则为”up”. 测试样例:1 返回原创 2016-08-27 16:13:52 · 1034 阅读 · 0 评论 -
最短排序
如题: 对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例:[1,5,3,4,2,6,7],7 返回:4 这一题,我开始想的是先进行排序,然后再和排好序的数组一一对应进行比较,这样找到最短需要排序的最短子数组,今天看了后边其他网友在牛客网上写的算法,真是太赞了,现在记录如下: 两次循环,第一次,先找到当原创 2016-08-28 16:48:37 · 529 阅读 · 0 评论 -
求水仙花数
题目: 水仙花数是一个十进制数的各个位的三次方之和等于其本身。 ifFlower()函数用来判断该数是不是水仙花数。 这个程序是输入两个整数m, n. 打印出m n之间的水仙花数,如果没有,就输出no#include <iostream>#include <vector>using namespace std;bool isFlower(int num){ bool flag =原创 2016-09-10 11:33:02 · 372 阅读 · 0 评论 -
笔试题-采购单
题目描述:小B每次去超市就将要购买的商品列个清单,每个项目买一个,若要买多个,就写多个商品名。例如:apple; banana; apple; peach; apple; apple; banana。小B太激动了,来超市来得太早,以至于服务员还没有将价签贴在商品上。小B看到价签还在柜台上,她想知道这次购物她最好和最坏情况下会花费多少钱。 输入:有多组测试数据,每组测试数据的第一行是两个整数n和m,原创 2016-09-10 14:24:04 · 402 阅读 · 0 评论 -
中兴编程题--获取未命中个数
题目描述: 输入最大缓存个数max_cache_size和页面申请数组page_requests,请求进入时的缓存状态,按留在缓存中最长时间到留在缓存中最短时间排序。输出未命中页面个数。 例如: 输入: max_cache_size: 2 page_requests:[1, 2, 1, 3, 1, 2] 输出: 5。 作者解释:这其实是先进先出页面置换算法,来求未命中个数。 作者设原创 2016-08-31 15:56:02 · 862 阅读 · 0 评论 -
数组全排列算法实现和组合算法实现
实现vector容器中数据的全排列和组合。 全排列是指所有元素的组合种类,比如某数组中有元素为1,2,3三个元素,那么这个数组的全排列是 1,2,3 1,3,2 2,1,3 2,3,1 3,2,1 3,1,2 而1,2,3的组合则有 1,2,3 1,2 1,3 1, 2,3 2, 3 为此,用递归实现了两个函数getPermutation()和getCombine()原创 2016-08-31 17:14:51 · 994 阅读 · 0 评论 -
编程-从矩阵左上角走到右下角
题目要求: 编写一个算法,在非负矩阵中,从左上角走到右下角,每次只能向左或向下移动一格,输出走过的路径节点坐标和最小权值。 方法:动态规划法 状态转移方程stat[i][j] = min{stat[i-1][j], stat[i][j-1]}。 逻辑:目的节点是从其上边节点或左边节点下来的,判断上边节点和左边节点哪个小,就是从哪个节点下来的,并用一个direct矩阵记录所来方向,若该节点是从原创 2016-09-01 22:41:05 · 2619 阅读 · 0 评论 -
打印蛇形矩阵
题目描述:编写一个函数,参数为一个整数N,返回一个N*N二维矩阵,这个矩阵的特点是左上角值为1,顺时针旋转缠绕从1到N*N。 例如:输入一个整数5 输出: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 做法: 定义一个for原创 2016-09-02 10:58:12 · 545 阅读 · 0 评论 -
make_heap(), pop_heap(), push_heap()用法
对make_heap(), pop_heap(), push_heap()的用法做个总结: make_heap()生成堆,他有两个参数,也可以有三个参数,前两个参数是指向开始元素的迭代器和指向结束元素的下一个元素的迭代器。第三个参数是可选的,可以用伪函数less()和greater()来生成大顶堆和小顶堆,其中type为元素类型。如果只传入前两个参数,默认是生成大顶堆。 push_heap()是原创 2016-08-24 11:31:12 · 12236 阅读 · 0 评论 -
牛客网刷题笔记--剑指offer(数据流中的中位数)
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 剑指offer给出的思路是: 用两个堆,一个大顶堆,一个小顶堆,若两个堆的元素个数之和为偶数,那中位数为两个堆顶元素值的平均,若个数和为基数,则中位数为小顶堆的顶。 逻辑为:1 先判断两个堆的元素原创 2016-08-24 10:46:58 · 662 阅读 · 0 评论 -
牛客网刷题--剑指offer(从尾到头打印链表)
题目描述: 输入一个链表,从尾到头打印链表每个节点的值。 单向链表只能从头到尾打印元素,而题目要求是从尾到头打印,顺序做了一个颠倒,这时就要用到了栈(后进先出)。 代码粘贴如下:/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :*原创 2016-08-23 16:06:35 · 578 阅读 · 0 评论 -
牛客网刷题--剑指offer(替换空格)
题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 做法是先做统计,看有多少个空格,之后算出若将一个空格字符换成三个字符,字符串总长度为多少。 假设有n个空格,那新的字符串长度为 老字符串长度 + 2 * n。 算出来之后,定义两个指针,一个指向老字符串末尾,一个指向新字符串末原创 2016-08-23 16:01:27 · 949 阅读 · 0 评论 -
牛课网刷题--剑指offer(二维数组中的查找)
题目介绍:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 做法:该题的突破口就在于每一行都是从左到右递增的顺序排序,每一列都是从上到下递增顺序排序的。那么,要找某一个数字,可以从右上或左下点开始。这两个是特殊的点,对于右上点,是每一行最大的点,每一列最小的点;对于左下点,是每一行原创 2016-08-22 17:49:19 · 449 阅读 · 0 评论 -
牛客网刷题--剑指offer(两个栈实现队列)
牛客网给出的题目要求是用两个栈数据结构实现一个队列的push和pop操作。 两个栈实现队列这是很好理解的。因为栈的特性是后进先出(LIFO),而队列的特性是先进先出(FIFO),那两个栈连在一块儿,第一个栈先进后出,然后从第一个栈再入第二个栈,还是先进后出,这样,先是倒序入第一栈,然后再倒序入第二个栈,倒序的倒序就是正序,所以若将两个栈看成一个整体,还是正序入,正序出,就是队列的特性:先进先出。原创 2016-06-29 17:56:24 · 806 阅读 · 0 评论 -
网易笔试编程-解救小易
题目描述: 有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒会横向或者纵向移动到相邻的草地上吃草(小易不会走出边界)。大反派超超想去捕捉可爱的小易,他手里有n个陷阱。第i个陷阱被安置在横坐标为xi ,纵坐标为yi 的位置上,小易一旦走入一个陷阱,将会被超超捕捉。你为了去解救小易,需要知道小易最少多少秒可能会走入一个陷阱,从而提前解救小易。 输入描述: 第原创 2016-11-26 17:14:31 · 324 阅读 · 0 评论