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);
    }
}
複製代碼
相關文章
相關標籤/搜索