这段时间我用PHP做了很多.寻找大海捞针.
$names = [
'Mike',
'John',
'Dave',
'Tony'
];
$gotDave = in_array('Dave', $names);
Run Code Online (Sandbox Code Playgroud)
in_array的运行时是O(n),其中n是元素的数量.
我经常将查找数据结构设置为这样.
$names = [
'Mike' => true,
'John' => true,
'Dave' => true,
'Tony' => true
];
$gotDave = isset($names['Dave']);
Run Code Online (Sandbox Code Playgroud)
运行时是O(1),因为在php中,关联数组是一个hashmap.
一些问题:
是的,这是一个很好的解决方案。事实上,这就是大多数编程语言的核心库中集合的实现方式 - 在我的脑海中,Python、Ruby 和 Java 都是这样做的。Go语言不提供Set,只是告诉你做你已经做过的事情。
我想不出任何理由使用除 true ``true`` 之外的任何值。这很有道理。