【2018校招】编程题
AbbyLoveCoding
做一个有趣的人,让有限的生命燥起来……
展开
-
数列
原创 2017-03-30 20:36:52 · 255 阅读 · 0 评论 -
字符串分类
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { // 需要写入的 public static void main(String[] args) { Scanner in = new Scanner(System.in);//原创 2017-03-23 20:43:07 · 837 阅读 · 0 评论 -
找整除
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int a = in.nextI原创 2017-03-23 20:44:40 · 546 阅读 · 0 评论 -
优美的回文串
没读懂题原创 2017-03-23 20:52:27 · 1015 阅读 · 2 评论 -
2017-4-26阿里客户端笔试题1
有以下几点规则: 这种玩法没有大小鬼,没有黑桃。只有红桃、方片、梅花,每种13张。供39张牌。两个人玩,每人手上的牌随机,可能是1张,也可能是38张。出牌有3种方法,单张,一对(两张大小一样,花色不同,例如44),三张(三张大小一样,花色不同。例如333)。顺序3最小、2最大,只能大牌压小牌,花色不影响,张数必须一致。且优先出最小的组合。例如,你手上有6699KK,对方出了33,你应该出66原创 2017-04-26 20:01:23 · 548 阅读 · 0 评论 -
2017-4-26阿里客户端笔试题2
在一张卡片上写下希望一起组队同学的编号,顺序无所谓。 例如1号同学希望能和4,5两位同学组队。就是卡片上写4 5。 但是为了让大家都满意,只有在4号同学愿意和1 5组队,且5号同学愿意和1 4组队的场景下,该组队请求(1 4 5)才能成立,组队成功的同学才能参加比赛。 请通过代码计算出所有可以参赛同学的分组结果。多个队伍之间半角逗号分隔,组内成员之间半角空格分隔。 组与组之原创 2017-04-26 20:02:57 · 471 阅读 · 0 评论 -
高级结构 查找 排序-维护X的秩
现在我们要读入一串数,同时要求在读入每个数的时候算出它的秩,即在当前数组中小于等于它的数的个数(不包括它自身),请设计一个高效的数据结构和算法来实现这个功能。 给定一个int数组A,同时给定它的大小n,请返回一个int数组,元素为每次加入的数的秩。保证数组大小小于等于5000。 测试样例: [1,2,3,4,5,6,7],7 返回: [0,1,2,3,4,5,6] import java原创 2017-08-08 11:58:12 · 279 阅读 · 0 评论 -
字符串 排序-字符统计
如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。实现以下接口: 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用) 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出 清空目前的统计结果,重新统计 调用者会保证: 输入的字符串以‘\0’结尾。输入描述: 输入原创 2017-08-08 13:33:53 · 559 阅读 · 0 评论 -
二分查找算法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上原创 2017-08-08 13:34:13 · 224 阅读 · 0 评论 -
快速排序算法
快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序算法的基本特性时间复杂度:O(n*lgn) 最坏:O(n^2)原创 2017-08-08 13:34:37 · 226 阅读 · 0 评论 -
猜数游戏
牛牛和羊羊在玩一个有趣的猜数游戏。在这个游戏中,牛牛玩家选择一个正整数,羊羊根据已给的提示猜这个数字。第i个提示是”Y”或者”N”,表示牛牛选择的数是否是i的倍数。 例如,如果提示是”YYNYY”,它表示这个数使1,2,4,5的倍数,但不是3的倍数。 注意到一些提示会出现错误。例如: 提示”NYYY”是错误的,因为所有的整数都是1的倍数,所以起始元素肯定不会是”N”。此外,例如”YNNY”的提示原创 2017-08-08 13:34:55 · 351 阅读 · 0 评论 -
偶串
如果一个字符串由两个相同字符串连接而成,就称这个字符串是偶串。例如”xyzxyz”和”aaaaaa”是偶串,但是”ababab”和”xyzxy”却不是。 牛牛现在给你一个只包含小写字母的偶串s,你可以从字符串s的末尾删除1和或者多个字符,保证删除之后的字符串还是一个偶串,牛牛想知道删除之后得到最长偶串长度是多少。 输入描述: 输入包括一个字符串s,字符串长度length(2 ≤ lengt原创 2017-08-08 13:35:16 · 445 阅读 · 0 评论 -
彩色瓷砖
牛牛喜欢彩色的东西,尤其是彩色的瓷砖。牛牛的房间内铺有L块正方形瓷砖。每块砖的颜色有四种可能:红、绿、蓝、黄。给定一个字符串S, 如果S的第i个字符是’R’, ‘G’, ‘B’或’Y’,那么第i块瓷砖的颜色就分别是红、绿、蓝或者黄。 牛牛决定换掉一些瓷砖的颜色,使得相邻两块瓷砖的颜色均不相同。请帮牛牛计算他最少需要换掉的瓷砖数量。 输入描述: 输入包括一行,一个字符串S,字符串长度leng原创 2017-08-08 13:35:34 · 459 阅读 · 0 评论 -
知识迁移能力-和为S的两个数字
和为S的两个数字题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 import java.util.ArrayList; public class Solution { /*解题思路:查找 数列满足递增,设两个头尾两个指针i和j,原创 2017-08-08 13:35:55 · 297 阅读 · 0 评论 -
Paragraph
原创 2017-03-30 20:36:21 · 691 阅读 · 0 评论 -
找出函数的最宽尖峰
#include #include #include #include #include #include #include using namespace std; const int MAX = 10000010; const int UP = 1, DOWN = -1, EQ = 0; int nums[MAX]; int main() { int n; scanf(原创 2017-03-30 20:35:13 · 557 阅读 · 0 评论 -
年会游戏
#include #include using namespace std; int main() { int n, maxweight; cin >> n; vector values = vector(n + 1, 0); vector weights = vector(n + 1, 0); for (int i = 1; i <= n; ++i) { cin >> val原创 2017-03-29 20:48:16 · 283 阅读 · 0 评论 -
二叉树的打印
有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。 给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。 import java.util.*; /* public class TreeNode { int val = 0; Tre原创 2017-02-13 17:19:28 · 225 阅读 · 0 评论 -
两串旋转
如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A="12345",A的旋转词有"12345","23451","34512","45123"和"51234"。对于两个字符串A和B,请判断A和B是否互为旋转词。 给定两个字符串A和B及他们的长度lena,lenb,请返回一个bool值,代表他们是否互为旋转词。 测试样例: "cdab",4,"abc原创 2017-02-13 17:22:42 · 195 阅读 · 0 评论 -
爸爸去哪儿
#include #include #include #include #include #include #include using namespace std; vector fruits; bool cmp(int a, int b) { return a > b; } int change(int leftValue, int useCnt) { if (left原创 2017-03-29 20:47:10 · 272 阅读 · 0 评论 -
知识迁移能力-二叉树的深度
##二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {原创 2017-08-08 13:36:12 · 304 阅读 · 0 评论