当前位置: 首页 > news >正文

Python 数组里找出子超集

碰见一个问题,有一个大数组,如下所示:

xx = [[1, 3, 4], [3, 4, 5], [1, 2, 3, 4, 5], [6], [7, 8], [6, 7, 8]]

大数组里面有好多小的数组,观察发现,小的数组其实有挺多别的小数组的子集,现在问题来了,想看下这里的有多少个能把小数组代表的出来的并集组合。
翻译起来就是,上面的数组我想要出来[[1, 2, 3, 4, 5],[6, 7, 8]]。

其实就是排序整理一下就可以了。

# 定义一个二维数组,每个元素是一个小数组
xx = [[1, 3, 4], [3, 4, 5], [1, 2, 3, 4, 5], [6], [7, 8], [6, 7, 8]]# 按照小数组的长度升序排序
sorted_array = sorted(xx, key=lambda x: len(x))# 初始化一个空列表,用于存储符合条件的索引
xx_index = []# 初始化一个标记数组,用于记录每个小数组是否被处理过
arr_index = [0] * len(sorted_array)# 从排序后的数组的最后一个元素开始倒序遍历
for i in range(len(sorted_array) - 1, 0, -1):# 如果当前元素未被标记为已处理if arr_index[i] == 0:# 遍历排序后的数组中的每一个元素for j in range(len(sorted_array)):# 如果 j 位置的元素未被处理,并且 j 位置的数组长度小于当前 i 位置的数组长度# 并且 j 位置的数组是 i 位置数组的子集if arr_index[j] == 0 and len(sorted_array[j]) < len(sorted_array[i]) and set(sorted_array[j]).issubset(set(sorted_array[i])):# 标记 j 位置的数组为已处理arr_index[j] = 1# 将当前 i 位置的索引加入结果列表xx_index.append(i)

http://www.mrgr.cn/news/98326.html

相关文章:

  • 【数据结构_4下篇】链表
  • 【数据结构_6上篇】有关链表的oj题
  • 14、nRF52xx蓝牙学习(串口 UART 和 UARTE 外设应用)
  • 【数据结构_4】顺序表
  • linux多线(进)程编程——(6)共享内存
  • 【前端工程化】-【vue2-ele项目升级】
  • 深度学习ResNet模型提取影响特征
  • 【数据结构_6下篇】有关链表的oj题
  • C语言打印的坑
  • 【玩转全栈】—— Django 连接 vue3 保姆级教程,前后端分离式项目2025年4月最新!!!
  • 个人博客系统后端 - 注册登录功能实现指南
  • 行星际激波在日球层中的传播:Propagation of Interplanetary Shocks in the Heliosphere (第二部分)
  • linux多线(进)程编程——(5)虚拟内存与内存映射
  • 【Java学习笔记】Java第一课,梦开始的地方!!!
  • centos7系统搭建nagios监控
  • SQL 解析 with as dual sysdate level
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day9
  • Day30笔记-综合项目: 购物车
  • CMD命令行笔记
  • Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(三)