只是我正在寻找的一个例子:我可以用一点代表每个奇数,例如对于给定的数字范围(1,10),从3开始:
__PRE__
以下字典可以挤得更对吗?我可以通过一些工作来消除五的倍数,但是以1,3,7或9结尾的数字必须在位数组中存在.希望这能澄清我想要的东西.
我正在寻找最好的算法,检查数字是否是素数,即布尔函数:
__PRE__
我想知道实现此功能的最佳算法.当然,我可以查询一个数据结构.我定义了最好的算法,它是生成数据结构的算法,该数据结构具有最低的内存消耗范围(1,N),其中N是常量.
通常的构造函数ArrayList是:
ArrayList<?> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
但是还有一个重载的构造函数,其初始容量有一个参数:
ArrayList<?> list = new ArrayList<>(20);
Run Code Online (Sandbox Code Playgroud)
ArrayList当我们可以随意添加时,为什么创建具有初始容量的产品很有用?
我需要一个行为类似于Map的数据结构,但使用多个(不同类型的)键来访问其值.
(我们不要太笼统,让我们说两把钥匙)
钥匙保证是独一无二的.
就像是:
MyMap<K1,K2,V> ...
Run Code Online (Sandbox Code Playgroud)
使用以下方法:
getByKey1(K1 key)...
getByKey2(K2 key)...
containsKey1(K1 key)...
containsKey2(K2 key)...
Run Code Online (Sandbox Code Playgroud)
你有什么建议吗?
我唯一能想到的是:
编写一个内部使用两个Maps的类.
编辑
有些人建议我使用元组,对或类似作为Java Map的键,但这对我不起作用:
如上所述,我必须能够通过两个键中的一个来搜索值指定.
地图使用密钥的哈希码并检查它们的相等性.
我想它可能是类似的collections.namedtuple,但这更像是一个冻结的词典(一个半冻结的词典).不是吗?
A"frozendict"应该是一个冰冻的字典,它应该有keys,values,get,等,并支持in,for等等.
我见过有人说setpython 中的对象有O(1)成员资格检查.它们如何在内部实施以实现这一目标?它使用什么样的数据结构?该实施还有哪些其他含义?
这里的每个答案都很有启发性,但我只能接受一个,所以我会用最接近我原来问题的答案.谢谢你的信息!
当我尝试:
Queue<Integer> q = new Queue<Integer>();
Run Code Online (Sandbox Code Playgroud)
编译器给我一个错误.有帮助吗?
另外,如果我想初始化队列,我是否必须实现队列的方法?
我是Mac/iPhone编程和Objective-C的新手.在C#和Java中,我们有"泛型",集合类的成员只能是声明的类型.例如,在C#中
Dictionary<int, MyCustomObject>
只能包含整数和值为MyCustomObject类型的键.Objective-C中是否存在类似的机制?
generics collections objective-c strong-typing data-structures
几个月前我在纽约接受了一家对冲基金公司的采访,不幸的是,我没有获得数据/软件工程师的实习机会.(他们还要求解决方案使用Python.)
我几乎搞砸了第一个面试问题......
问题:给定一个百万个数字的字符串(例如Pi),写一个函数/程序,返回所有重复的3位数字和大于1的重复次数
例如:如果字符串是:123412345123456那么函数/程序将返回:
123 - 3 times
234 - 3 times
345 - 2 times
Run Code Online (Sandbox Code Playgroud)
我在面试失败后没有给我解决方案,但他们确实告诉我,解决方案的时间复杂度始终为1000,因为所有可能的结果都在:
000 - > 999
既然我正在考虑它,我认为不可能提出一个恒定的时间算法.是吗?
C++ 0x正在引入unordered_set,可以在boost许多其他地方使用.我理解的是unordered_set具有O(1)查找复杂性的哈希表.另一方面,set只是具有log(n)查找复杂性的树.为什么人们会使用set而不是unordered_set?即是否需要set了?
Stack我的用例需要一个数据结构.我应该能够将项目推送到数据结构中,我只想从堆栈中检索最后一项.该堆栈的JavaDoc说:
Deque接口及其实现提供了更完整和一致的LIFO堆栈操作集,应优先使用此类.例如:
Deque<Integer> stack = new ArrayDeque<>();
Run Code Online (Sandbox Code Playgroud)
我肯定不希望在这里同步行为,因为我将使用本地数据结构的方法.除了这个,我为什么要喜欢Deque在Stack这里?
PS:Deque的javadoc说:
Deques也可以用作LIFO(后进先出)堆栈.应优先使用此接口,而不是传统的Stack类.
data-structures ×10
java ×4
algorithm ×3
python ×3
arraylist ×1
c++ ×1
c++11 ×1
capacity ×1
collections ×1
cpython ×1
dictionary ×1
generics ×1
immutability ×1
math ×1
objective-c ×1
primes ×1
queue ×1
set ×1