在数组中使用值作为键可以降低搜索项目时的复杂性

Yad*_*ada 10 php arrays

这段时间我用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.

一些问题:

  • 我应该这样做吗?这是一个好习惯吗?
  • 右手骑行是否有更好的价值

Dan*_*nge 1

是的,这是一个很好的解决方案。事实上,这就是大多数编程语言的核心库中集合的实现方式 - 在我的脑海中,Python、Ruby 和 Java 都是这样做的。Go语言不提供Set,只是告诉你做你已经做过的事情。

我想不出任何理由使用除 true ``true`` 之外的任何值。这很有道理。