【发布时间】:2011-10-26 18:42:50
【问题描述】:
给定一个整数数组,找出第一个唯一的整数。
我的解决方案:使用std::map
将整数(数字作为键,其索引作为值)一一放入(O(n^2 lgn)),如果有重复,则从映射中删除条目(O(lg n)),将所有数字放入映射后,迭代映射并找到具有最小索引 O(n) 的键。
O(n^2 lgn) 因为map需要排序。
效率不高。
其他更好的解决方案?
【问题讨论】:
-
当您说“唯一的第一个整数”时,您是指遇到的第一个整数还是最小的整数或随机数?
-
将所有整数添加到映射是
O(n log(n)),而不是O(n^2 log(n))。每个插入都是O(log(n)),其中有n。 -
新解决方案是否符合您的问题,还是我错过了什么?
标签: c++ c algorithm sorting map