- 博客(51)
- 收藏
- 关注
原创 【算法题】寻找出现次数过半的元素
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。 给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。 若没有金额超过总数的一半,返回0。 测试样例: [1,2,3,2,2],5 返回:2class Gift {
2017-05-31 17:00:04 656
原创 【算法题】格雷码
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。 给定一个整数n,请返回n位的格雷码,顺序为从0开始。 测试样例: 1 返回:[“0”,”1”]class GrayCode {public: vector<string> getGray(int n) {
2017-05-31 16:58:17 895
原创 【算法题】最长回文子串
方法1:暴力判断所有子串:用两个for循环找出所有子串,第三个for循环用于判断该子串是否为回文,是回文则且比已找到的回文串长就替换,算法时间效率为O(n^3)方法2:中心扩展法:遍历每个字符,以此为中心,往两边拓展,需要分为奇数回文和偶数回文两种情况:abcba 、abba。算法时间效率为O(n^2)#include <iostream>#include <vector>#include
2017-05-31 16:06:54 285
原创 【算法题】最长回文子序列
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述: 对于每组数据,输出一个整数,代表最少需要删除的字符个数。 输入例子: abcda google 输
2017-05-31 14:30:37 388
原创 【算法题】字符移位
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗? 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述: 对于每组数据,输出移位后的字符串。 输入例子: AkleBiCeilD 输出例子: kleie
2017-05-31 09:32:11 292
原创 【算法题】有趣的数字
小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢? 输入描述: 输入包含多组测试数据。 对于每组测试数据: N - 本组测试数据有n个数 a1,a2…an - 需要计算的数据 保证: 1<=N<=100000,0<=ai<=INT_MAX. 输出描述: 对于每组数据,输出
2017-05-31 09:14:50 609
原创 【算法题】训练部队
小牛牛是牛牛王国的将军,为了训练出精锐的部队,他会对新兵进行训练。部队进入了n个新兵,每个新兵有一个战斗力值和潜力值,当两个新兵进行决斗时,总是战斗力值高的获胜。获胜的新兵的战斗力值就会变成对手的潜力值 + 自己的战斗力值 - 对手的战斗力值。败者将会被淘汰。若两者战斗力值一样,则会同归于尽,双双被淘汰(除了考察的那个新兵之外,其他新兵之间不会发生战斗) 。小牛牛想知道通过互相决斗之后新兵中战斗力值
2017-05-28 11:13:49 828
原创 【算法题】砌砖块
小易有n块砖块,每一块砖块有一个高度。小易希望利用这些砖块堆砌两座相同高度的塔。为了让问题简单,砖块堆砌就是简单的高度相加,某一块砖只能使用在一座塔中一次。小易现在让能够堆砌出来的两座塔的高度尽量高,小易能否完成呢。 输入描述: 输入包括两行: 第一行为整数n(1 ≤ n ≤ 50),即一共有n块砖块 第二行为n个整数,表示每一块砖块的高度height[i] (1 ≤ he
2017-05-27 16:04:22 3023
原创 【算法题】小易记单词
小易参与了一个记单词的小游戏。游戏开始系统提供了m个不同的单词,小易记忆一段时间之后需要在纸上写出他记住的单词。小易一共写出了n个他能记住的单词,如果小易写出的单词是在系统提供的,将获得这个单词长度的平方的分数。注意小易写出的单词可能重复,但是对于每个正确的单词只能计分一次。 输入描述: 输入数据包括三行: 第一行为两个整数n(1 ≤ n ≤ 50)和m(1 ≤ m ≤ 50
2017-05-27 10:40:37 645
原创 【算法题】涂棋盘
小易有一块n*n的棋盘,棋盘的每一个格子都为黑色或者白色,小易现在要用他喜欢的红色去涂画棋盘。小易会找出棋盘中某一列中拥有相同颜色的最大的区域去涂画,帮助小易算算他会涂画多少个棋格。 输入描述: 输入数据包括n+1行:第一行为一个整数n(1 ≤ n ≤ 50),即棋盘的大小接下来的n行每行一个字符串表示第i行棋盘的颜色,’W’表示白色,’B’表示黑色 输出描述: 输出小易会
2017-05-27 10:27:32 3340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人