PHP 使用二分搜索树实现集合

namespace set;
/**
 * 集合接口
 * @package set
 */
interface Set
{
    function add($val);

    function remove($val);

    function contains($val);

    function isEmpty();

    function getSize();
}

namespace set;
use bst\BST;

/**
 * 集合类 ,使用二分搜索树实现集合
 * @package set
 */
class BSTSet  implements  Set{
    /**
     * 二分搜索树对象
     * @var BST
     */
    public $bst;

    public function __construct()
    {
        $this->bst = new BST();
    }

    public function isEmpty()
    {
        return $this->bst->isEmpty();
    }

    public function getSize()
    {
        return $this->bst->getSize();
    }

    public function add($val)
    {
        $this->bst->add($val);
    }

    public function remove($val)
    {
        $this->bst->remove($val);
    }

    public function contains($val)
    {
        return $this->bst->contains($val);
    }
}
复制代码

测试用例数组

给定两个数组,编写一个函数来计算它们的交集。bash

示例 1:函数

输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]测试

示例 2:ui

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4]this

说明:spa

输出结果中的每一个元素必定是惟一的。 咱们能够不考虑输出结果的顺序。code

$nums1 = [4,9,5];
$nums2 = [9,4,9,8,4];

$set = new set\BSTSet();

foreach ($nums1 as $v)
    $set->add($v);

$arr=[];
foreach ($nums2 as $v){
    if($set->contains($v)){
        $arr[]= $v;
        $set->remove($v);
    }
}
复制代码
相关文章
相关标签/搜索