OJ题
文章平均质量分 68
blame_
这个作者很懒,什么都没留下…
展开
-
替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路: 遍历字符串,计算出空格的个数,然后扩容字符串,使指针指向扩容后的大小的位置(一个空格替换成三个字符,所以应该原大小加2*空格个数)。然后使用前后指针,一个指向源字符串末尾,一个指向修改后的末尾,依次拷贝,遇到空格则替换。(将末尾的‘\0’一并拷贝进来) class Solution { public: void replaceSpa.原创 2020-07-22 22:25:10 · 145 阅读 · 0 评论 -
二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解决思路: 从二维数组的第一行的最后一个元素开始查找,如果大于这个数组元素,则排除第一行;如果小于这个数组元素,则派出最后一列。依次推进。 class Solution { public: bool Find(int target, vector<vector<int> > arr.原创 2020-07-22 22:06:32 · 166 阅读 · 0 评论 -
组队竞赛问题
题目说明 时间限制:1秒空间限制:32768K 牛牛举办了一次编程比赛, 参加比赛的有3*n个选手, 每个选手都有一个水平值a_i.现在要将这些选手进行组队, 一共组成n个队伍, 即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。 例如 : 一个队伍三个队员的水平值分别是3, 3, 3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是3, 2, 3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是1, 5, 2.那么队伍的水平值是2 为了让比赛更有看点, 牛牛想安排队伍使所有队伍的原创 2020-06-01 23:16:28 · 298 阅读 · 0 评论 -
左右最值最大差
题目描述: 给定一个长度为n(n > 1)的整型数组a,可以将a划分成左右两个部分,左部分a[0…k],右部分a[k + 1…n - 1],k可以取值的范围[0, n - 2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组a和数组的大小n,请返回题目所求的答案。 解题思路 题目可以理解为,a中的最大元素值减去a[0]或者a[n-1]。 因为max...原创 2020-04-17 23:34:02 · 232 阅读 · 0 评论 -
【牛客网】字符串计数
题目描述 求字典序在s1和s2之间的,长度在len1到len2之间的字符串个数,结果 mod 1000007. 输入描述 每组数据包涵s1(长度小于100),s2(长度小于100),len1(小于100000),len2(大于len1,小于100000) 解题思路 算出两个字符串各自每位s[i]-'a’的值,得出总的字典序和Count,然后Count(s2)-Count(s1)-1 #in...原创 2020-04-07 23:51:12 · 617 阅读 · 2 评论 -
【牛客网】洗牌问题
问题描述 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿 着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的 倒数第二张牌,直到最后放下左手的第一张...原创 2019-11-29 23:47:51 · 333 阅读 · 0 评论 -
【牛客网】拿手套问题
题目描述 在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。 给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组l...原创 2019-11-23 22:30:09 · 315 阅读 · 0 评论 -
【牛客网】查找组成一个偶数最接近的两个素数
题目描述 任意一个偶数(大于2)都可以由2个素数组成,要求输出组成指定偶数的两个素数差值最小的素数对。 输入: 20 输出: 7 13 解题思路 首先这个偶数num由两个素数组成,那么这两个素数一定是一个比num的一半大,另一个比num的一半小的两个数。只要从 num/2 开始向两边找到最近的素数,就是题目要求的素数对。 代码: #include<iostream> using n...原创 2019-11-18 16:34:40 · 652 阅读 · 1 评论 -
【牛客网】数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{ 1, 2, 3, 2, 2, 2, 5, 4, 2 }。由于数 字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0 共有两种解题思路: 方法一 把数组排序之后,出现次数超过一半的数一定是它中间那个数,这个很容易理解。 我们只需要把数组排序,然后找出中间位置的数字,再判...原创 2019-11-14 17:32:40 · 240 阅读 · 0 评论 -
【牛客网】排序子序列问题
问题描述 牛牛定义排序子序列为一个数组中一段连续的子序列, 并且这段子序列是非递增或者非递减排序的。牛牛有一 个长度为n的整数数组A, 他现在有一个任务是把数组A分为若干段排序子序列, 牛牛想知道他最少可以把这个数 组分为几段排序子序列. 如样例所示, 牛牛可以把数组A划分为[1, 2, 3]和[2, 2, 1]两个排序子序列, 至少需要划分为2个排序子序列, 所以输出2 输入输出 输入的第...原创 2019-11-13 16:38:28 · 533 阅读 · 0 评论 -
【牛客网】求多少步才能成为斐波那契数
题目描述 Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一 个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。 输入输出描述 输入为一个正整数N(1 ≤ N ≤ 1,000,000) 输出一...原创 2019-11-13 12:29:13 · 366 阅读 · 0 评论