求分组之后的去重记录数. 类似sql中的selec col,discount(col2) from table group by col.
比如有下列数据(名字,年份)
张三,2018 张三,2019 李四,2018
对名字汇总,年份去重计数后得到
张三,2 李四,1
题目会有两种要求,一种是计算所有汇总后数据,一种只需要计算输出部分数据,上面的例子,如果只输入前一条,结果为
张三,2
输入数据为一连串数字,前四个数字为参数信息,后面数字表示一个二维表。 第一个数字表示有多少列 第二个数字表示有多少汇总列,二维表前面的列为汇总列,剩下的列全部为计算去重的列。 第三个数字表示有多少行 第四个数字表示结果取前多少条记录,如果为-1表示取全部记录。
{2, 1, 3, -1, 1, 1, 3, 1, 1, 2};
这个数据会构造出下面的二维表
1,1 3,1 1,2
输入格式为文件IO,可以用下面类似代码获取数据
RandomAccessFile fs = new RandomAccessFile("in", "r"); FileChannel fc = fs.getChannel(); MappedByteBuffer buffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); IntBuffer intBuffer = buffer.asIntBuffer();
把得到的二维表数字全部加起来,输出为结果。
对于构造出下面的二维表,第一列为汇总列
汇总去重计数后得到
1,2 3,1
全部加起来为7,最终输出结果就为7。
例一
计算得到
最终输出7
例二
{3, 2, 7, 3, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 3, 1, 2, 1, 1, 2, 3, 1, 1, 2, 2}
1,1,2 2,1,1 2,3,1
最终输出14