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

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

相关文章

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序