XX公司综合机试题第三题,以前有人讨论过,这里列出不同的算法
3.请实现一个函数:最长顺子;输入很多个整数(1<=数值<=13),返回其中可能组成的最长的一个顺子(顺子中数的个数代表顺的长度); 其中数字1也可以代表14; 顺子包括单顺\双顺\3顺;单顺的定义是连续5个及以上连续的数,比如1,2,3,4,5、3,4,5,6,7,8和10,11,12,13,1等;双顺的定义是连续3个及以上连续的对(对:两个相同的数被称为对),比如1,1,2,2,3,3、4,4,5,5,6,6,7,7和11,11,12,12,13,13,1,1等;3顺的定义是连续2个及以上连续的3张(3张:3个相同的数被称为3张),比如1,1,1,2,2,2、3,3,3,4,4,4,5,5,5,6,6,6和13,13,13,1,1,1等等;
比如:输入数组[1,5,2,3,4,4,5,9,6,7,2,3,3,4], 输出数组[2,2,3,3,4,4,5,5]
public static Integer[] doTest(Integer[] array) {
int[] count = new int[array.length];
for (int i = 0; i < array.length; i++) {
if (array[i] < 1 || array[i] >= array.length)
return null;
++count[array[i]];
}
TreeMap<Integer, Map<Integer, Integer>> allList = new TreeMap<Integer, Map<Integer, Integer>>();
Map<Integer, Integer> map = null;
for (int k = 0; k < 3; k++) {
map = getList(count, k);
if (null != map) {
if (0 == k)
allList.put(map.size(), map);
else if (1 == k)
allList.put(2 * map.size(), map);
else
allList.put(3 * map.size(), map);
}
}
if (allList.size() > 0) {
Map<Integer, Integer> maxList = allList.get(allList.lastKey());
List<Integer> resultList = new LinkedList<Integer>();
Collection<Integer> coll = maxList.values();
int min = Collections.min(coll);
for (Integer k : maxList.keySet()) {
for (int j = 0; j < min; j++) {
resultList.add(k);
}
}
Integer[] result = new Integer[resultList.size()];
resultList.toArray(result);
return result;
} else
return null;
}
private static Map<Integer, Integer> getList(int[] count, int k) {
TreeMap<Integer, Map<Integer, Integer>> list = new TreeMap<Integer, Map<Integer, Integer>>();
Map<Integer, Integer> map = null;
int flag = 0;
for (int i = 1; i < count.length; i++) {
if (count[i] > k && flag == 0) {
flag = 1;
map = new LinkedHashMap<Integer, Integer>();
map.put(i, count[i]);
} else if (count[i] > k && flag == 1) {
map.put(i, count[i]);
if (13 == i) {
if (count[14 - i] > k) {
map.put(14 - i, count[14 - i]);
putList(k, list, map);
} else {
flag = 0;
putList(k, list, map);
}
}
} else if (count[i] <= k && flag == 1) {
flag = 0;
putList(k, list, map);
map = null;
}
}
if (list.size() > 0)
return list.get(list.lastKey());
else
return null;
}
private static void putList(int k, TreeMap<Integer, Map<Integer, Integer>> list, Map<Integer, Integer> map) {
if (0 == k && map.size() >= 5) {
list.put(map.size(), map);
}
if (1 == k && map.size() >= 3) {
list.put(2 * map.size(), map);
}
if (2 == k && map.size() >= 2) {
list.put(3 * map.size(), map);
}
}
分享到:
相关推荐
使用c语言和穷举法求解各个数位上数字和等于5的数
1. 个数统计函数: count 29 2. 总和统计函数: sum 29 3. 平均值统计函数: avg 30 4. 最小值统计函数: min 30 5. 最大值统计函数: max 30 6. 非空集合总体变量函数: var_pop 30 7. 非空集合样本变量函数: var_samp 31...
还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。 编程环境:vs2010,语言:...
用一个函数实现两个字符串的比较,即自己写一个 strcmp 函数
本文给出一个c语言程序,实现一个函数,判断一个数是不是素数。
实现函数:ExitSystem(); 1.增加职工信息 实现函数:Add_Emp(); 2.显示职工信息 实现函数:show_Emp(); 3.删除离职职工 实现函数:Del_Emp(); 4.修改职工信息 实现函数:Mod_Emp(); 5.查找职工信息 实现函数:...
计算机二级DELPHI函数:Hook技术实现键盘监控.doc
1,利用顺序表的操作实现以下函数: (1)从顺序表中删除具有最小值的元素,并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息,并退出运行。 (2)在顺序表的第i个位置之后...
∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示杨辉三角 7 范例1-4 显示杨辉三角 7 ∷相关函数:c函数 8 1.1.5 魔方阵 9 ...
本文给出一个程序,实现一个函数判断year是不是润年感性趣的朋友可以参考下。
∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示杨辉三角 7 范例1-4 显示杨辉三角 7 ∷相关函数:c函数 8 1.1.5 魔方阵 9 ...
YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数-CSDN博客.mhtml
得一个 3×3 的矩阵转置,用一函数实现之。在主函数中用 scanf 函数输入矩阵元素
用户自定义函数 在SQL Server中,用户不仅可以使用标准的内置函数...表值函数:返回值是一个记录集合--表。在此函数中,return语 句包含一条单独的select语句。 多语句表值函数:返回值是由选择的结果构成的记录集。
C# 实现回调函数C# 实现回调函数C# 实现回调函数C# 实现回调函数C# 实现回调函数
本题要求实现一个函数,将两个字符串连接起来。 函数接口定义: char *str_cat( char *s, char *t ); 函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址
编程实现用getchar函数从键盘输入一个小写字母,并用putchar函数输出对应的大写字母。
指针 ~~编写一个函数,将数组中n个数按反序存放。 实验步骤与要求: 在主函数中输入10个数,并输出排好序的数。 编写函数invert()将10个数按反序存放。
∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示杨辉三角 7 范例1-4 显示杨辉三角 7 ∷相关函数:c函数 8 1.1.5 ...
∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示杨辉三角 7 范例1-4 显示杨辉三角 7 ∷相关函数:c函数 8 1.1.5 ...