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);
}
}
复制代码