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

如何判断输入数组的元素是否来自同一分组?

问题说明

给定分组列表:

a = [[658,659,660],[1217,1218,1219],[1691,1692,1693],[1694,1695,1696]]

要求实现一个判断逻辑:仅当输入数组的所有元素都来自同一个嵌套分组时返回True,元素跨分组则返回False。

示例输入输出

  • [658] → True
  • [658,659] → True
  • [658,659,660] → True
  • [1217] → True
  • [1217,1218] → True
  • [1217,1218,1219] → True
  • [1217,658] → False
  • [1217,1218,658] → False
  • [658,659,1217] → False
解决方案

方法一:预构建映射(高效查询)

先建立元素到所属分组的字典,后续查询时只需检查所有元素是否属于同一分组,适合频繁查询的场景:

# 预生成元素-分组映射
group_map = {}
for group in a:
    for num in group:
        group_map[num] = group

def is_same_group(input_arr):
    if not input_arr:
        return True  # 空数组的返回值可根据实际需求调整
    target_group = group_map.get(input_arr[0])
    # 检查所有元素是否都在目标分组内
    return all(num in target_group for num in input_arr)

测试示例:

print(is_same_group([658]))          # True
print(is_same_group([1217,658]))     # False
print(is_same_group([1694,1695]))    # True

方法二:实时遍历分组(无需预构建)

如果分组列表规模较小,也可以直接遍历分组统计元素所属的分组数量,数量为1则返回True:

def is_same_group(input_arr):
    if not input_arr:
        return True
    # 用集合存储元素所属的分组(转元组实现哈希)
    unique_groups = set()
    for num in input_arr:
        for group in a:
            if num in group:
                unique_groups.add(tuple(group))
                break
    return len(unique_groups) == 1

内容的提问来源于stack exchange,提问作者Hemanth Hema Surya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:54:18