最大整数.

news/2025/1/1 7:44:31/

本节通过解决一个经典的最大整数拼接问题,说明盲目贪心算法策略是无法求得全局最优解的.

问题描述:

给定一个列表,其中包括一些非负整数,试求如何组合这些非负整数,才能组成一个最大整数,为了避免最大整数过大造成溢出,返回结果为字符类型.

思路解析:

初遇这个问题,可能会直观的认为只要将值较大的数字放在整数前面,较小的数字放在整数后面即可,但只要经过简单的验证就可以知道这一想法是错误的.例如输入列表为[121,12],若将值较大的元素放在前面,最终结果得到为12112,若将较小值放在前面,那么整数就是12121,显然12121大于12112,可以直接推翻这个贪心策略.

由此可见在决定两个元素如何拼接时,不能简单的通过两元素大小进行判断,需要对比二者不同拼接方式所组成的数字大小才能决定,因此可以使用双层循环,遍历数组的每两个元素组合,每次循环分别确定拼接的第一位,第二位.....然后将元素按照顺序拼起来返回即可.变量定义如下:

nums变量:表示给定的,由非负整数构成的列表

temp变量:表示对nums进行排序过程中的中间变量

完整代码如下:

def largestNumber(nums):# 将数组中的每个整数转换成字符串nums = [str(i) for i in nums]# 两层循环,用于比较所有字符串拼接后的数值大小for i in range(len(nums)-1):for j in range(i+1,len(nums)):# 如果当前字符串i和字符串j拼接后的数值小于字符串j和字符串i拼接后的数值# 则交换字符串i和字符串j的位置if int(nums[i]+nums[j])<int(nums[j]+nums[i]):temp = nums[i]nums[i]=nums[j]nums[j]=temp# 将排序后的字符串数组拼接成一个字符串largest_num = ''.join(nums)# 如果拼接后的字符串表示的数字是0,则直接返回0if int(largest_num)==0:return str(0)else:# 否则返回拼接后的字符串return largest_num


http://www.ppmy.cn/news/1559082.html

相关文章

Kafka高可用机制总结

1. 集群模式 1.1组成结构 Kafka集群由多个broker实例构成&#xff0c;每个broker是一个Kafka实例。 1.2高可用保障 某一台broker宕机时&#xff0c;其他broker仍可对外提供服务&#xff0c;保证了集群的高可用性。但仅回答此点过于简单&#xff0c;需结合分区复制机制回答以…

医疗平板与普通平板对比:优势尽显

在当今数字化的时代&#xff0c;平板电脑已经成为人们生活和工作中不可或缺的一部分。而在医疗领域&#xff0c;医疗平板也逐渐崭露头角&#xff0c;与普通平板相比&#xff0c;它具备诸多独特的优势&#xff0c;能够更好地满足医疗行业的特殊需求。 一、硬件设计与防护 坚固耐…

基于三种机器学习方法的磁芯损耗预测模型

大家好&#xff0c;我是带我去滑雪&#xff01; 磁性元件在电力转换和传输系统中扮演着关键角色&#xff0c;而磁芯损耗是影响其效率的重要指标。随着工业和能源需求的增长&#xff0c;尤其是可再生能源和智能电网的快速发展&#xff0c;对磁性元件的高效、紧凑、低功耗需求日益…

Chapter 03 复合数据类型-1

1.列表 Python内置的一种有序、可变的序列数据类型&#xff1b; 列表的定义&#xff1a; [ ]括起来的逗号分隔的多个元素组成的序列 列表对象的创建&#xff1a; &#xff08;1&#xff09;直接赋值 >>> list1 []#创建一个空列表赋值给list1 >>> list…

大数据-256 离线数仓 - Atlas 数据仓库元数据管理 正式安装 启动服务访问 Hive血缘关系导入

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

攻防世界web新手第四题easyphp

<?php highlight_file(__FILE__); $key1 0; $key2 0;$a $_GET[a]; $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die("Emmm...再想想&quo…

理想的未来在AI——李想深度解析理想汽车的智能化之路

摘要&#xff1a; 在2024年的AI Talk中&#xff0c;理想汽车董事长兼CEO李想分享了他对人工智能的深刻见解和理想汽车在智能化道路上的最新进展。本文整理了访谈的精华内容&#xff0c;探讨了李想如何将理想汽车从传统车企转型为人工智能企业&#xff0c;并展望了人工智能技术如…

第一个C++程序|cin和cout|命名空间

第一个C程序 基础程序 使用DevC5.4.0 写一个C程序 在屏幕上打印hello world #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } 运行这个C程序 F9->编译 F10->运行 F11->编译运行 mai…