我的任务是解决以下难题: 编写一个输入解析器(使用C,Python,Java或Go),以从标准输入中读取文件,然后 将数据读取到字节数组(8位字节)中。 检查该行是否具有唯一的字节值集。如果是这样,它应该跟踪行号。最后,它应该打印出在每行上具有唯一的一组字节值的行号。
-程序应以高效的方式和时间运行–不应达到大O(n ^ 2) 复杂性或更差。尝试看看是否可以在很长的时间内完成。 -应该将文件读入字节数组(8位值),而不会超出内存。
我正在从使用的示例文件读取50MBfile,
一行一行地将行存储在字节数组中
然后调用方法checkDuplicate(byte[] arr)
并传递字节数组
然后创建一个哈希集并遍历数组的各个元素,然后将它们添加到哈希集中,然后返回哈希集的大小。
由于哈希集不允许在主列表中重复,因此我检查返回的大小是否等于数组大小,以确定其是否唯一以保存行号。
private int checkDuplicate(byte[] arr) {
HashSet<Byte> byteSet = new HashSet<Byte>();
int size=0;
for (byte e : arr){
if (e != 0 && byteSet.add(e)) {}
size = byteSet.size();
}
return size;
}
能否实现O(c)或O(n)? 到目前为止,我得到的是O(n ^ 2),稍后当我达到O(n)时将处理内存异常。
还可以解决python中的问题吗?