数据并集,交集,差集运算

  • 两个有序整型数组交集
function getIntersection($aArr,$bArr)
{
    asort($aArr);
    asort($bArr);

    $result = [];

    $aIndex = 0;
    $bIndex = 0;

    $aCount = count($aArr);
    $bCount = count($bArr);

    while ($aIndex < $aCount && $bIndex < $bCount) {
        if ($aArr[$aIndex] < $bArr[$bIndex]) {
            $aIndex++;
        } elseif ($bArr[$bIndex] < $aArr[$aIndex]) {
            $bIndex++;
        } else {
            $result[] = $aArr[$aIndex];
            $aIndex++;
            $bIndex++;
        }
    }
    return $result;
}
  • 两个有序数组并集
function getUnionArray($a, $b)
{

    $unionArray = [];

    $aIndex = 0;
    $bIndex = 0;

    $aCount = count($a);
    $bCount = count($b);

    while ($aIndex < $aCount && $bIndex < $bCount) {
        if ($a[$aIndex] < $b[$bIndex]) {
            $unionArray[] = $a[$aIndex];
            $aIndex++;
        } elseif ($a[$aIndex] > $b[$bIndex]) {
            $unionArray[] = $b[$bIndex];
            $bIndex++;
        } else {
            $unionArray[] = $a[$aIndex];
            $aIndex++;
            $bIndex++;
        }
    }

    if ($aIndex < $aCount) {
        for ($i = $aIndex; $i < $aCount; $i++) {
            $unionArray[] = $a[$i];
        }
    }

    if ($bIndex < $bCount) {
        for ($i = $bIndex; $i < $bCount; $i++) {
            $unionArray[] = $b[$i];
        }
    }

    return $unionArray;
}
  • 两个有序数组的差集
function getDifferenceArray($a, $b)
{

    $result = [];

    $aIndex = 0;
    $bIndex = 0;

    $aCount = count($a);
    $bCount = count($b);

    while ($aIndex < $aCount && $bIndex < $bCount) {
        if ($a[$aIndex] < $b[$bIndex]) {
            $result[] = $a[$aIndex];
            $aIndex++;
        } elseif ($a[$aIndex] > $b[$bIndex]) {
            $result[] = $b[$bIndex];
            $bIndex++;
        } else {
            $aIndex++;
            $bIndex++;
        }
    }

    if ($aIndex < $aCount) {
        for ($i = $aIndex; $i < $aCount; $i++) {
            $result[] = $a[$i];
        }
    }

    if ($bIndex < $bCount) {
        for ($i = $bIndex; $i < $bCount; $i++) {
            $result[] = $b[$i];
        }
    }

    return $result;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 9,585评论 2 13
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,827评论 3 44
  • 先看下交集 再看并集,这个要复杂一些。容易想到的算法是,将两个数组merge,得到一个新的有序数组,然后去重即可。...
    packet阅读 4,811评论 0 0
  • 读经: 《创世记》第19章。 经文: 罗得到了琐珥,日头已经出来了。……罗得因为怕住在琐珥,就同他两个女儿,从琐珥...
    君自尔出阅读 13,572评论 1 1
  • 也许你正在赶路,那么我想大多数的你们是错过了这一路的风景,也许你正在思考,映入眼帘的这无限春光,也无暇顾及。多少人...
    夏殇琳儿阅读 1,832评论 2 2

友情链接更多精彩内容