Spa*_*dan -4 string algorithm performance
微软面试问题
从字符串中删除重复项,不使用HASHMAP和O(n)时间复杂度
O(n 2)时间复杂度有一个解决方案,但面试问题特别提到了没有HASHMAP和O(n)时间.
任何指针都很受欢迎,因为我不能想到任何低于O(n log n)时间的东西,它采用排序并使用O(n)空间.
Sam*_*ica 11
你做了一种斗式排序.
我们使用这样的2个数组的唯一原因是因为你明确禁止哈希映射.您可以随意代表这种结构.如果允许将字符转换为ints,则只需使用1个数组.
由于我们假设可能的字符数量有限,每个数组将是常量大小,或者O(1)
count为char你找到的每个字符串递增.如果计数已经大于0您发现的重复数.在char数组中搜索特定的char会花费O(1)时间,因为字符数量有限.
您将对此次搜索进行n次搜索,以获得O(n)的净运行时间
如果数组不好,那么你可以创建一个链表来保存你找到的值.它仍然是常量,因为链表的大小仍然受可能字符数的限制.
如果你这样做,你或多或少会做同样的事情,除了它在外观上看起来不像桶式排序策略.