求列表中两个子序列之差最小的序列

2023-12-30 04:18

本文主要是介绍求列表中两个子序列之差最小的序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SC

def mean(sorted_list):"""题目:将一个序列分成两个子序列,确保两者之间的差值最小实现:1. 对列表排序2. 递归列表:取出-1位置元素作为big,-2 位置元素作为small,从前到后,切到-2位置(不包括)3. 递归结束条件:传入的参数为空,开始递归退层4. 一个大列表b_list,和一个小列表a_list,分别用来存放小元素和大元素5. 对比大列表和小列表的总和,调换两者的位置缺点:1. 序列长度只能是偶数2. 贪心算法,只能保证局部最优:param sorted_list::return:"""if not sorted_list:return [], []if len(sorted_list) < 2:small = Falseelse:small = sorted_list[-2]big = sorted_list[-1]b_list, s_list = mean(sorted_list[:-2])if small != False:b_list.append(small)s_list.append(big)b_list_sum = sum(b_list)s_list_sum = sum(s_list)if b_list_sum > s_list_sum:return b_list, s_listelse:return s_list, b_list# tests = [[1, 2, 3, 4, 5, 6, 700, 800], [10001, 10000, 100, 90, 50, 1], list(range(1, 11)),
#          ]
tests = [[12312, 12311, 232, 210, 30, 29, 3, 2, 1, 1, 20]]
for test in tests:test.sort()print('source list:\t', test)l1, l2 = mean(test)print('result list:', l1, l2)print('distance', abs(sum(l1) - sum(l2)))print('*' * 23)

输出

在这里插入图片描述
在这里插入图片描述

这篇关于求列表中两个子序列之差最小的序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/551681

相关文章

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

python中列表list切分的实现

《python中列表list切分的实现》列表是Python中最常用的数据结构之一,经常需要对列表进行切分操作,本文主要介绍了python中列表list切分的实现,文中通过示例代码介绍的非常详细,对大家... 目录一、列表切片的基本用法1.1 基本切片操作1.2 切片的负索引1.3 切片的省略二、列表切分的高

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da