利用python寻找列表中相邻元素之差绝对值为1的所有最长链

一、前言:

今天工作遇到一个问题,根据不同的柜子选取能连接在一起的所有柜子,有可能一组,也有可能几组;把这个问题简单化,就是给你一组列表[2, 1, 3, 4, 5, 7, 9, 8, 12, 13, 14, 15],得到相邻两个数绝对值为1的列表组合,结果:[[5, 4, 3, 2, 1], [7, 8, 9], [12, 13, 14, 15]]

二、思路:

1、遍历列表,寻找每个元素与下一个元素之差绝对值为1的元素,例如:[2,1],[1,2,3]

2、寻找完毕后,发现如下结果:[[2, 1], [3, 2, 1], [4, 3, 2, 1], [5, 4, 3, 2, 1], [7, 8, 9], [12, 13, 14, 15]],需要把小列表删除,比如:[3,2,1]包含[2,1],所以删除[2,1]

三、代码:

list1 = [2, 1, 3, 4, 5, 7, 9, 8, 12, 13, 14, 15]# 递归,寻找符合条件的所有元素元素
def get_li(list1, l, con_list):w1_list = list1.copy()w2 = list1.copy()for i in con_list:w2.remove(i)if len(w2) == 0:return con_listfor wl in w2:if abs(l - wl) == 1:con_list.append(wl)return get_li(w1_list, wl, con_list)return con_list# 得到最终的链列表
def connect_l(list1):existlist = []ds_list = []for l in list1:if l not in existlist:ws = get_li(list1, l, [l])ds_list.append(ws)for e in ws:existlist.append(e)return ds_listli = connect_l(list1)# 删除小列表,如:[3,2,1]包含[1,2],删除[1,2]得到最优列表组合
ret_li = li.copy()
for i in range(len(li) - 1):if [c for c in li[i] if c in li[i + 1]]:if li[i] in ret_li:ret_li.remove(li[i])print(ret_li)

结果:

[[5, 4, 3, 2, 1], [7, 8, 9], [12, 13, 14, 15]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1489. 找到最小生成树里的关键边和伪关键边(并查集+kruskal最小生成树)

文章目录1. 题目2. 解题1. 题目 给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] [fromi, toi, weighti] 表示在 fromi 和 toi 节点之间有一条带权无向边。 最小生成树 (MST) 是给定图中边的…

斯特林发动机图纸尺寸_南昌教学模型订做,航空发动机模型_境海模型

首页 > 新闻中心发布时间:2020-11-08 13:57:07 导读:境海模型为您提供南昌教学模型订做,航空发动机模型的相关知识与详情: 曾经的沙盘模型一般只有模型自身,没有现代的视觉作用例如:灯火声音形象等动态的作用。景观…

C# 关于列表List<T>排序总结与整理

一、概述 SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。 如果您使用索引访问各项,则它是一个动态数组(ArrayList&#xff0…

iOS给图片打水印,并将打过水印的图片生成到沙盒中

- (void)WaterImage{ UIImage *bgImage [UIImage imageNamed:"scene"]; // 上下文 : 基于位图(bitmap) , 所有的东西需要绘制到一张新的图片上去 // 1.创建一个基于位图的上下文(开启一个基于位图的上下文) // size : 新图片的尺寸 // opaq…

app inventor离线版_小鸡漫画app手机版下载_小鸡漫画好看的漫画手机版下载

小鸡漫画app手机版,是一款无限量看漫画的阅读软件。小鸡漫画app手机版为喜欢看漫画的用户带来超多好看、热门、经典的漫画集,在这里看漫画没有乱七八糟和漫画无关的东西打扰。小鸡漫画app手机版方便看漫画,让一个人的你不再孤单,午…

LeetCode 963. 最小面积矩形 II

文章目录1. 题目2. 解题1. 题目 给定在 xy 平面上的一组点,确定由这些点组成的任何矩形的最小面积,其中矩形的边不一定平行于 x 轴和 y 轴。 如果没有任何矩形,就返回 0。 示例 1: 输入:[[1,2],[2,1],[1,0],[0,1]…

C#中判断浮点数double/float是否相等

一、float型与零值比较的语句 if(x < -0.000001 && x > 0.000001) // !0 if(x > -0.000001 && x < 0.000001)// 0 二、float型与float型如何判断相等 浮点数的表示是不精确的&#xff0c;不能直接比较两个数是否完全相等&#xff0c;一般都是在…

树的存储结构(树的二叉链表(孩子—兄弟))

// c6-5.h 树的二叉链表(孩子—兄弟)存储结构(见图6.32) typedef struct CSNode {TElemType data;CSNode *firstchild,*nextsibling; }CSNode,*CSTree; 一棵树无论有多少叉&#xff0c;它最多有一个长子和一个排序恰在其下的兄弟。根据这样的定 义&#xff0c;则每个结点的结构…

C# 二维与三维计算多边形面积的方法

1、二维情况下&#xff0c;计算多边形面积 internal static float GetArea(List<Vector2> points) {float area2 0;for (int numPoint 0; numPoint < points.Count - 1; numPoint){MyPoint point points[numPoint];MyPoint nextPoint points[numPoint 1];area2 …

i12蓝牙耳机使用说明书图片_配置强悍、适用于开车、运动的蓝牙耳机Xisem西圣 Ares使用体验...

现在的蓝牙耳机市场五花八门、有降噪的、有高保真音质的、有适用于运动不掉的… … 真有是各出奇招。那么作为消费者应该如何选择呢&#xff1f;前段时间入手一款硬件配置很高、无论是开车&#xff0c;还是运动都适用的蓝牙耳机“Xisem西圣 Ares真无线蓝牙耳机”。包装简介&…

LeetCode 918. 环形子数组的最大和(前缀和+单调队列)

文章目录1. 题目2. 解题1. 题目 给定一个由整数数组 A 表示的环形数组 C&#xff0c;求 C 的非空子数组的最大可能和。 在此处&#xff0c;环形数组意味着数组的末端将会与开头相连呈环状。 &#xff08;形式上&#xff0c;当0 < i < A.length 时 C[i] A[i]&#xff0…

小案例:王者荣耀战力查询系统(免费调用外部接口

一、查询网址&#xff08;点击&#xff09;&#xff1a; 王者战力查询-王者战力排行榜 二、战力查询接口&#xff1a; 接口调用&#xff1a; https://www.jk.cxkf.cc/api_select.php参数&#xff1a; hero&#xff1a;英雄名字 type&#xff1a;qq、wx、ios_qq、ios_wxqq&…

open函数返回-1_4.6 linux的系统调用执行探究(1)

arm64大约支持280个系统调用&#xff0c;我们平时使用的这些系统调用&#xff0c;到底工作原理是什么&#xff0c;调用后又是到哪里实现的呢&#xff0c;这篇文章初步了解下内核系统调用的流程&#xff0c;并告诉跟踪这个流程的方法。废话不多说&#xff0c;如上就是linux的系统…

LeetCode 781. 森林中的兔子(哈希+贪心)

文章目录1. 题目2. 解题1. 题目 森林中&#xff0c;每个兔子都有颜色。 其中一些兔子&#xff08;可能是全部&#xff09;告诉你还有多少其他的兔子和自己有相同的颜色。 我们将这些回答放在 answers 数组里。 返回森林中兔子的最少数量。 示例: 输入: answers [1, 1, 2] 输…

4*4矩阵转换成二维平面坐标

一、需求&#xff1a;基于苹果数据4*4矩阵数据&#xff0c;转换成二维平面坐标系 二、解决方法与步骤&#xff1a; 用到的方法&#xff1a; 1、Matrix4的转化_Catirl的博客-CSDN博客 2、平面内直角坐标系中坐标旋转变换公式_Eric_Wangyz的博客-CSDN博客_坐标旋转变换公式 …

C#操作Excel(1)Excel对象模型

Excel对象模型 &#xff08;.Net Perspective&#xff09; 本文主要针对在Visual Studio中使用C# 开发关于Excel的应用程序 本文的PDF下载地址&#xff1a;C#操作Excel2007.pdf 来源&#xff1a;Understandingthe Excel Object Model from a .NET Developers Perspective Exce…

蓝牙适配器 能同时接多少个设备_便携音箱也能有立体环绕声,JVC智能蓝牙颈挂音箱体验...

说起音箱&#xff0c;相信音乐爱好者是很熟悉了&#xff0c;而随着蓝牙技术的不断发展&#xff0c;便携式蓝牙音箱开始受到越来越多用户的喜爱&#xff0c;它能够让我们摆脱线材束缚&#xff0c;随时随地畅享音乐。虽然便携式蓝牙音箱小巧易携带&#xff0c;音质方面也在不断提…

LeetCode 1156. 单字符重复子串的最大长度

文章目录1. 题目2. 解题1. 题目 如果字符串中的所有字符都相同&#xff0c;那么这个字符串是单字符重复的字符串。 给你一个字符串 text&#xff0c;你只能交换其中两个字符一次或者什么都不做&#xff0c;然后得到一些单字符重复的子串。 返回其中最长的子串的长度。 示例 …

☆☆在Eclipse中编译NDK的so文件(普通安卓项目转换为NDK项目的设定)

1 将Native的编译链接配置加入项目中 2 进行编译 3 项目支持Native后&#xff0c;在首尾分别新增了两个编译过程 转载于:https://www.cnblogs.com/YangBinChina/p/3937287.html

小案例:利用图床自动化批量上传图片并获取图片链接

一、前言&#xff1a; 用python爬虫写了一个小脚本&#xff0c;用来自动上传图片到图床&#xff0c;然后返回链接&#xff0c;我们只需直接复制链接就可以。&#xff08;需要安装Requests库&#xff09;因为不同图床需要提交的POST表单不一致&#xff0c;所以在这里我用ImgURL…