You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现Leader数组与Member数组连续ID序列的关联映射

关联递增ID数组中的Leader与连续Member序列

现有两个元素为递增ID的扁平数组Leaders和Members,需要将每个Leader ID关联到Members数组中的一段连续ID序列;如果Leader的数量多于Members中可划分的连续序列数量,剩余Leader的关联值设为null。

示例输入

$leaders = [1,4,8,13];
$members = [2,3,5,6,7,9,10,11,12];

期望输出

$leaders = [
   1 => [2,3],
   4 => [5,6,7],
   8 => [9,10,11,12],
   13 => null
];

解决方案(PHP实现)

function mapLeadersToMembers($leaders, $members) {
    $result = [];
    $memberPos = 0;
    $totalMembers = count($members);
    
    foreach ($leaders as $idx => $leaderId) {
        // 获取下一个Leader的ID,无则设为极大值
        $nextLeader = $idx + 1 < count($leaders) ? $leaders[$idx + 1] : PHP_INT_MAX;
        $currentGroup = [];
        
        // 筛选当前Leader与下一个Leader之间的所有Member
        while ($memberPos < $totalMembers && $members[$memberPos] > $leaderId && $members[$memberPos] < $nextLeader) {
            $currentGroup[] = $members[$memberPos];
            $memberPos++;
        }
        
        $result[$leaderId] = empty($currentGroup) ? null : $currentGroup;
    }
    
    return $result;
}

// 测试代码
$leaders = [1,4,8,13];
$members = [2,3,5,6,7,9,10,11,12];
print_r(mapLeadersToMembers($leaders, $members));

代码说明

  • 遍历Leaders数组时同步跟踪Members的遍历位置,避免重复扫描,保证执行效率
  • 每个Leader对应的Member区间定义为:大于当前Leader ID且小于下一个Leader ID的所有连续Member
  • 若某个Leader没有匹配到任何Member,直接将其关联值设为null

内容的提问来源于stack exchange,提问作者Harlton Hinon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:45:31