之前的项目碰到一个对导入数据进行校验的需求,大概描述为下:
通过excel导入一批学生数据,需要对其中每个学生的学号进行校验,将学号长度不符合(即万一出现学生学号少/多输了一位,输入不规范学号的情况此处不予考虑)的数据打回。
前提:
- 每一条数据都要进行校验
- 每批数据的错误率较低
- 每批学生的学号拥有一个固定的标准长度(事先并不知道)
有两个方向的想法。
-
通过求众数
①一开始考虑的是遍历数组寻找长度的众数再进行一一比较,于是问题就转化成了如何最快的寻找众数。
但是后来跟亲友交流后又觉得在错误率不高且每批数据标准学号长度唯一的情况下没必要通过遍历所有数组寻找众数
②就想通过随机取三四条数据再取其众数然后进行比较。
- 随机比较
后来觉得其实没有求众数的必要
③随机取两条数据,再将当前数据与这两条随机数据的学号长度进行比较,一旦出现不相等的情况就打回。
大概想到了以上三种方法,但是第一种当数据量大了后增加时间复杂度,后两种则是在数据量小的时候可能造成误判。
有在考虑是否应该根据数据量来决定调用哪种方法。
想问一下这种需求在降低复杂度且不会出错的前提下应该怎么进行处理最好呢?