nowcoder笔记
文章平均质量分 70
iCoding91
KISS
keep it simple and short
展开
-
幸运的袋子问题(DFS+回溯+剪枝)
其实,自己一直对回溯问题理解,但是自己就是写不出code,而且,之前对剪枝也不是太熟悉,只能说听过这个词。那么,这次刷的这个题目,就把DFS+回溯+剪枝这3个问题同时应用到了,不得不说,真心多刷题才能对一些算法思想:从认识到理解,再到懂得,最后才算真明白了。开始都只是单纯认同而已。所以,一定要多刷题,多对比,多总结。1、题目:题目描述一个袋子里面有n个球,每个球原创 2017-11-10 18:04:57 · 1989 阅读 · 0 评论 -
迷宫问题(java)
1、题目:题目描述小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫。为了让问题简单,假设这是一个n*m的格子迷宫,迷宫每个位置为0或者1,0代表这个位置有障碍物,小青蛙达到不了这个位置;1代表小青蛙可以达到的位置。小青蛙初始在(0,0)位置,地下迷宫的出口在(0,m-1)(保证这两个位置都是1,并且保证一定有起点到终点可达的路径),小青蛙在迷原创 2017-11-29 17:19:27 · 2966 阅读 · 0 评论 -
暗黑字符串问题(java)
1、题目:题目描述一个只包含'A'、'B'和'C'的字符串,如果存在某一段长度为3的连续子串中恰好'A'、'B'和'C'各有一个,那么这个字符串就是纯净的,否则这个字符串就是暗黑的。例如:BAACAACCBAAA 连续子串"CBA"中包含了'A','B','C'各一个,所以是纯净的字符串AABBCCAABB 不存在一个长度为3的连续子串包含'A','B','C',所以是原创 2017-11-29 11:30:03 · 370 阅读 · 0 评论 -
数串问题(java)
1、牛客网题:题目描述设有n个正整数,将他们连接成一排,组成一个最大的多位整数。如:n=3时,3个整数13,312,343,连成的最大整数为34331213。如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。输入描述:有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N输出描述:每组数据输出一个表示最大的整数。原创 2017-11-27 11:26:29 · 1467 阅读 · 0 评论 -
数的高度(java)
之前求树的高度,都是直接用的节点定义的树的结构,这次是给出的数组,其实也没差距太多。层序遍历即可解决。1、二叉树的树高(默认,输入一个节点有多个孩子节点时,从第3个孩子节点开始,后续节点都被忽略,不作为该节点的孩子节点处理)1.1、题目描述现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度输入描述:输入的第一行表示原创 2017-11-26 23:35:26 · 478 阅读 · 0 评论 -
求数列的和(double保留2位小数)
1、题目:题目描述数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。输入描述:输入数据有多组,每组占一行,由两个整数n(n 输出描述:对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。示例1输入81 42 2输出94.733.41原创 2017-11-24 16:30:46 · 1156 阅读 · 0 评论 -
对n以内的数字进行字典序排序(java)
刷题时,遇到的问题,目前是想到了两种方式:一种是重写比较器;另一种是使用字符串的表达方式,然后进行自然排序。下面给出例子。1、改写比较器方式package schooloffer17;import java.util.*;/** * @Author: cxh * @CreateTime: 17/11/21 15:28 * @ProjectName: JavaB原创 2017-11-21 20:13:05 · 8207 阅读 · 1 评论 -
进制转换问题(java)
虽然这个题目比较简单,但是还是要记录一下,毕竟算是个进制转换到通用写法,还是比较方便的。1、题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10原创 2017-11-17 15:40:20 · 451 阅读 · 0 评论 -
编码问题(java)
1、题目:题目描述假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以原创 2017-11-19 13:49:03 · 347 阅读 · 0 评论 -
饥饿的小易(BFS问题)
1、原题:题目描述小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃。最开始小易在一个初始位置x_0。对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者8 * x + 7。因为使用神秘力量要耗费太多体力,所以它只能使用神秘力量最多100,000次。贝壳总生长在能被1,000,000,007整除的位置(比如:位置0,位置1,000,000,007,位原创 2017-11-08 16:40:48 · 1970 阅读 · 0 评论 -
Trie树(字典树)
转自::http://blog.csdn.net/jiutianhe/article/details/80768351. Trie树Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效转载 2017-11-30 11:35:26 · 517 阅读 · 0 评论 -
异或问题(java)
1、题目:题目描述给定整数m以及n各数字A1,A2,..An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大于m的有多少个。输入描述:第一行包含两个整数n,m. 第二行给出n个整数A1,A2,...,An。数据范围对于30%的数据,1 <= n, m <= 1000对于100%的数据,1 <= n, m, Ai <= 10原创 2017-11-30 11:43:01 · 798 阅读 · 0 评论 -
字典序(头条校招java)
1、题目:题目描述给定整数n和m, 将1到n的这n个整数按字典序排列之后, 求其中的第m个数。对于n=11, m=4, 按字典序排列依次为1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9, 因此第4个数是2. 对于n=200, m=25, 按字典序排列依次为1 10 100 101 102 103 104 105 106 107 108 109 11原创 2017-11-30 22:00:12 · 557 阅读 · 0 评论 -
混合颜料(求矩阵的秩问题)
感觉这是一个思路还挺奇特的题目,算是一种新思路积累吧。反正是第一次用code求一个矩阵的秩,我还是太差啦...努力空间太大1、题目:题目描述你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自原创 2017-11-11 11:22:36 · 437 阅读 · 0 评论 -
操作系统中的管程
1、管程的基本思想:将共享变量和对它们的操作集中在一个模块。将分散在各个进程中的临界区集中起来进行统一控制和管理,并且将系统中的共享资源用数据结构抽象的描述出来,然后对临界区的访问通过管程进行统一管理。每一时刻只能由一个进程管理访问。2、几句很重要的点:管程由编程语言实现,编译器提供支持。管程可以实现进程互斥,进程同步。绝不仅仅是只能实现进程互斥。任何时刻只能有一个进程原创 2017-11-03 10:11:04 · 2313 阅读 · 0 评论 -
两段锁协议
转自:http://blog.csdn.net/a479898045/article/details/88133651、两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁: 1.1、在对任何数据进行读、写操作之前,要申请并获得对该数据的封锁。 1.2、 每个事务中,所有的封锁请求先于所有的解锁请求。 例如事务T1遵守两段锁协议,其封转载 2017-11-17 10:19:55 · 2507 阅读 · 2 评论 -
java中split时,需要转义的几个字符
就写了几个刷题时候用到的,如果你还知道其他的,谢谢补充。1、或|,点.,加+,乘*,在字符串中出现时,如果这个字符串需要被split,则split时候,需要在前面加两个反斜杠。 与&,在split时候,不需要转义。2、测试code:public class Main{ public static void main(String[] args) {原创 2017-11-18 17:53:31 · 15835 阅读 · 2 评论 -
数据库的概念模型
参考:http://blog.csdn.net/zmx729618/article/details/45059805 1、概念模型:(1)定义:现实世界到信息世界的第一层抽象,确定领域实体属性关系等。(2)表示方式:E-R图。 2、逻辑模型:(1)定义:a、将概念模型转化为数据模型。b、根据选定的DBMS原创 2017-11-04 09:24:57 · 16344 阅读 · 1 评论 -
地牢逃脱问题(BFS拓展java)
1、牛客网题目:题目描述给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这原创 2017-11-04 19:26:14 · 493 阅读 · 0 评论 -
Linux下Fork与Exec使用
转自:http://blog.csdn.net/zhoubangtao/article/details/53888792一、引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使转载 2017-12-01 10:35:02 · 318 阅读 · 0 评论 -
分田地问题(java)
1、题目:题目描述牛牛和 15 个朋友来玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成 16 份,作为领导干部,牛牛总是会选择其中总价值最小的一份田地, 作为牛牛最好的朋友,你希望牛牛取得的田地的价值和尽可能大,你知道这个值最大可以是多少吗?输入描述:每个输入包含 1 个测试用例。每个测试原创 2017-12-02 15:46:27 · 882 阅读 · 0 评论 -
电话号码分身(java小米校招17)
1、题目:题目描述继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 ("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的原创 2017-12-02 11:53:13 · 741 阅读 · 3 评论 -
数字游戏问题(迭代java)
1、牛客网原题:题目描述小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给原创 2017-11-06 17:15:23 · 442 阅读 · 0 评论 -
构造队列问题(循环队列变形java)
1、牛客网原题:题目描述小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:while(!Q.empty()) //队列不空,执行循环{ int x=Q.front(); //取出当前队头的值x Q.pop(); //弹出当前队头原创 2017-11-05 14:33:57 · 395 阅读 · 0 评论 -
快速幂求法(二进制求解)java实现
1、如果不用final类Math下面的方法pow求解一个数字的幂次方,那么可以使用二进制方式实现这一一个功能。2、思想:3、code实现:import java.util.Scanner;/** * 快速幂求法(二进制求解) * 算法思想:利用了二进制和幂的对应关系. * 举例:求Math.pow(3,5)值.求3的5次方的值. * (1)底数=3,幂=5;原创 2017-10-19 16:25:49 · 939 阅读 · 0 评论 -
数独求解java
1、牛客网原题:数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。输入描述:输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。输出描述:输出九行,每行九个空格隔开的数字,为解出的答案。2、code实现package schooloffer原创 2017-10-18 18:15:55 · 518 阅读 · 0 评论 -
回溯算法解数独问题(java版)
一直不太会数独问题,这次下决定搞明白,找到这篇文章,觉得说的真的很清楚,所以转下来啦。转自:http://blog.csdn.net/tianyaleixiaowu/article/details/50912924下面来详细讲一下如何用回溯算法来解数独问题。 下图是一个数独题,也是号称世界上最难的数独。当然了,对于计算机程序来说,只要算法是对的,难不难转载 2017-10-18 11:36:13 · 514 阅读 · 0 评论 -
为给定字符串设计哈夫曼编码java实现
1、牛客网题目:题目描述请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。输入描述:每组数据一行,为待编码的字符串。保证字符串长度小于等于1000。输出描述:一行输出最短的编码后长度。示例1输入MT-TECH-TEAM输出332、code原创 2017-10-16 17:52:13 · 2056 阅读 · 0 评论 -
最长公共子序列
1、题目描述:时间限制:3秒 空间限制:32768K 热度指数:6932本题知识点: 贪心 动态规划 算法知识视频讲解题目描述对于两个字符串,请设计一个高效算法,求他们的最长公共子序列的长度,这里的最长公共子序列定义为有两个序列U1,U2,U3...Un和V1,V2,V3...Vn,其中Ui<Ui+1,Vi<Vi+1。且A[Ui] == B[Vi原创 2017-09-28 16:44:20 · 334 阅读 · 0 评论 -
并查集及其算法实现
1、算法思想:转自:http://blog.csdn.net/hpuhjh/article/details/47832795一、算法介绍:并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。 并查集的基本操作有两个:1:合并union(x, y):把元素 x 和元素 y 所在的集合合并,原创 2017-09-21 22:19:51 · 309 阅读 · 0 评论 -
TopK问题
TopK问题说明: 1)求最小k个数,使用大顶堆; 2)求最大k个数,使用小顶堆。 实现代码如下import java.util.ArrayList; //第k小,则构造大顶堆 public class Main{ public static void main(String args[]) { Main mai...原创 2018-03-21 17:40:54 · 285 阅读 · 0 评论 -
拼凑面额dp
1.题目给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。 2.代码import java.util.*;public class Main{ public static void main(String args[]) { Scanner sc...原创 2018-03-22 11:46:22 · 422 阅读 · 3 评论 -
调整数组顺序使奇数位于偶数前面(归并排序java)
1.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 1.剑指offer上面的方法不能保证奇数奇数,偶数偶数的相对位置不改变 2.之前自己用的都是冒泡排序,但显然时间复杂度不好,这次利用归并排序重写了算法,利用空间换时间 2.code实现(已a)...原创 2018-04-13 17:38:28 · 1292 阅读 · 0 评论 -
Fibonacci求解第n项(矩阵法)
1、递归法,时间复杂度:O(n*n);2、普通循环算法:时间复杂度:O(n);3、矩阵法:时间复杂度:O(logn);前2个方法,都比较简单,刷题时候用过了,但是这次刷题,属于Fibonacci加强版,对时间性能很有要求,使用1或者2方法一直ac不了,所以看了矩阵求解方法。这个方法看了一个下午才明白,所以一定要记录的。3.1、先看一下矩阵法的推导过程,也就是如何把一个Fibonacci求解转为对矩...原创 2017-10-19 18:20:15 · 1488 阅读 · 0 评论 -
Fibonacci扩展(奶牛问题)
此题目,还是用快速幂求解,以空间换时间的思想。下面给出题目、思想分析、代码1、题目:在农场中,奶牛家族是一个非常庞大的家族,对于家族中的母牛,从它出生那年算起,第三年便能成熟,成熟的母牛每年可以生出一只小母牛。即母牛从出生开始的第三年便能做妈妈。最开始农场只有一只母牛,它从第二年开始生小母牛。请设计一个高效算法,返回第n年的母牛总数,已知n的范围为int范围内的正整原创 2017-10-22 12:46:22 · 1042 阅读 · 0 评论 -
单源最短路径Dijkstra算法(java实现)
一直没写过Dijkstra算法,都是停留在理论中,这次终于写了一个,当然也参考了其他人的code,但是毕竟还是从code上面又进步了,继续刷题~~~1、牛客网题目:原来是要到醋溜站台乘坐醋溜快车到醋溜港”,亮亮解出了地图隐藏的秘密,赶紧奔向醋溜站台,但到了之后,亮亮忧桑地发现,从醋溜站台到醋溜港沿途的每个车站都有很多美女被他飒爽的英姿所吸引,只要经过车站就会被这些漂亮的女孩搭讪,但原创 2017-10-22 21:24:30 · 666 阅读 · 0 评论 -
字典排序问题加强版(java)
1、牛客网原题:题目描述牛牛的作业薄上有一个长度为 n 的排列 A,这个排列包含了从1到n的n个数,但是因为一些原因,其中有一些位置(不超过 10 个)看不清了,但是牛牛记得这个数列顺序对的数量是 k,顺序对是指满足 i 输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个整数 n 和 k(1 输出描述:输出一行表示合法的排列数目。示例1原创 2017-11-02 17:04:41 · 604 阅读 · 0 评论 -
合唱团问题(dp)
1、题目描述有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 i(-50 输出描述:输出一行表示最大的乘积。示例1输原创 2017-10-30 16:08:39 · 639 阅读 · 0 评论 -
折纸问题(递归java)
1、问题描述:请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。 给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".原创 2017-10-29 12:01:50 · 1334 阅读 · 0 评论 -
字符串通配(动态规划java)
1、牛客网题目:题目描述对于字符串A,其中绝对不含有字符’.’和’*’。再给定字符串B,其中可以含有’.’或’*’,’*’字符不能是B的首字符,并且任意两个’*’字符不相邻。exp中的’.’代表任何一个字符,B中的’*’表示’*’的前一个字符可以有0个或者多个。请写一个函数,判断A是否能被B匹配。给定两个字符串A和B,同时给定两个串的长度lena和lenb,请返原创 2017-10-27 18:08:17 · 1304 阅读 · 1 评论