牛客网做题笔记
新博客地址:tingyun.site
忘记一个当了很久的自己,从新开始
展开
-
最长公共子序列(LCS)
本来这篇文章是想直接转载过来一篇,然后看看就行了,但是个人总觉得看别人的不如自己动手写过的理解好,所以还是决定把理解的过程记录下来。LCS问题:首先先知道LCS问题,这有两种: 1.Longest Common Substiring —- 最长公共子串 2.Longest Common Sequence —- 最长公共子序列这两者的区别是:前者必须是原字符串中连续的一段原创 2016-08-30 22:09:40 · 3198 阅读 · 0 评论 -
牛客网做题笔记--洗牌问题
题目描述:洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。接着原创 2016-08-28 15:23:54 · 2933 阅读 · 4 评论 -
牛客网答题笔记---有趣的数字
题目描述小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?题目分析这个题目是要我们找最大的差和最小的差的个数,那么我们分开想: 1.最大的差,这个怎么找呢?最大的差就是最大的数和最小数的差,那么取决于这最小的数和最大的数的个数,假设一个最小数,3个最的数,就有三个相同的最大差,那么这个就很好想了。Max = 最大数个数 * 最小数个数 2.最小的差。这个原创 2016-08-30 23:28:44 · 859 阅读 · 0 评论 -
牛客网答题笔记---字符移位
题目描述:小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗?分析这题的给出的一个提醒点是不要申请额外的空间,那么我们在main函数中就不能初始化任何变量,我第一时间想到的是构造一个函数,对字符串进行拼接成string之后再返回,这个比较简单,但是好像有点投机取巧了。解法1#include<iostream> #inclu原创 2016-08-30 23:14:37 · 722 阅读 · 0 评论 -
牛客网答题笔记---构造回文
题目描述:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。分析在一个长的串中找到最长的那个回文串,也就是最长回文串序列。 由于我们知道,回文是从左到右和从右到左读都是一个样子的串,也就是相等,那么我们可以想象一下,将这个长串reverse。 reverse之后呢?我们知道回文正着读和反着读是相等的,那么就是说rever原创 2016-08-30 22:39:05 · 1176 阅读 · 0 评论 -
牛客网答题笔记--构造队列
这篇文章接上一篇,在牛客上关于一道约瑟夫环问题的解题笔记:题目描述:小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:while(!Q.empty()) //队列不空,执行循环 { int x=Q.front(); //取出当前队头的值x Q.pop(); //弹出当原创 2016-08-28 15:08:38 · 1123 阅读 · 0 评论 -
牛客网答题笔记---地域划分
题目描述 现在有一块长条形的土地,这个土地我们可以看成是由n块小方格连接而成的(这些小方格我们可以将之编号为1到n)。 而我们需要将其划分成两个部分,分别种上不同的作物(即作物A和B),划分必须在某两个小方格之间进行,或者在土地的最左端或最右端,若划分在第i块到第i+1块间进行,则划分后,第1至第i块地种A,剩下的地种B。 现在有一些专家对土地进行了检测,他们每个人评估了每块土地适合种的作物原创 2016-09-04 12:25:45 · 575 阅读 · 0 评论 -
牛客网答题笔记---字符串变型
题目描述:对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。 首先这个字符串中包含着一些空格,就像”Hello World”一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如”Hello World”变形后就变成了”wORLD hELLO”。输入描述给定一个字符串s以及它的长度n(1≤n≤500) 输出描述请返回变形后的字符原创 2016-09-04 12:57:57 · 971 阅读 · 0 评论 -
牛客网答题笔记---数字游戏
题目描述小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选原创 2016-09-03 21:32:15 · 1979 阅读 · 0 评论