【贪心算法-第三弹——Leetcode-179.最大数】

devtools/2024/11/25 15:54:45/

1.题目解析

题目来源

测试用例 

2.算法原理 

3.实战代码

代码解析 

*4.贪心策略的合理性证明(离散数学——全序关系)

完全性

反对称性

传递性 


1.题目解析

题目来源

179.最大数——力扣

测试用例 

2.算法原理 

I.由题目我们知道需要返回将数组的所以数字组合形成的一个最大的数字,所以我们可以将整数类型转化为字符串,这样便于运算

II.这里如果使用暴力解法就是从前到后将每个数字高位值更大的排到前面然后不断遍历组合字符串即可,但是这样时间复杂度会很大,不妨使用贪心的思路,这里"贪心"的思路是:

III.需要注意的是当数组中全部是0的情况,此时我们理想的返回值就是一个字符"0",但是如果不特殊处理上述逻辑就返回的是类似"00000"这样的情况,显然不行。所以我们在最后要判断字符串的首位元素是否为"0",是的话就直接返回一个字符"0"即可

小tips:为什么上面只需要判断第一个位置是否为字符"0"?因为由排序的底层逻辑可以知道当第一位都是字符"0"时就代表此时整个字符串必定全部为"0",所以只需要判断第一个即可

3.实战代码

class Solution {
public:string largestNumber(vector<int>& nums) {vector<string> str;for(auto e : nums){str.push_back(to_string(e));}    //lamda表达式 //[](参数列表)//{函数体}sort(str.begin(),str.end(),[](const string s1,const string s2){return s1 + s2 > s2 + s1;});string ret;for(auto& e : str){ret += e;}return ret[0] == '0' ? "0" : ret;}
};

代码解析 

*4.贪心策略的合理性证明(离散数学——全序关系)

完全性

反对称性

传递性 


http://www.ppmy.cn/devtools/136871.html

相关文章

C#里怎么样快速地操作文本文件?

C#里怎么样快速地操作文本文件? 对于文本文件,在C#里有一种快速的方法。 它就是FileInfo类。 文本文件是一种平常使用的文件,比如XML文件,JSON文件,.ini配置文件等等。 操作文本文件的常用方法: AppendText() CreateText() OpenText() 这几个函数都是采用UTF-8编码来…

【数据分享】2024年我国省市县三级的住宿服务设施数量(8类住宿设施/Excel/Shp格式)

宾馆酒店、旅馆招待所等住宿服务设施的配置情况是一个城市公共基础设施完善程度的重要体现&#xff0c;一个城市住宿服务设施种类越丰富&#xff0c;数量越多&#xff0c;通常能表示这个城市的公共服务水平越高&#xff01; 本次我们为大家带来的是我国各省份、各地级市、各区…

BMP280 STM32 SPI 数据不变的问题

这里写自定义目录标题 BMP280 通过SPI与STM32通讯调试发现一个问题&#xff0c;设置为正常模式&#xff0c;但是循环读取时&#xff0c;数据不变。经搜索发现很多人遇到&#xff0c;有的甚至调试了半年搜索结果&#xff1a;读取完数据以后&#xff0c;两个方法 1. 往 0x74地址写…

Which Tasks Should Be Learned Together in Multi-task Learning? 译文

摘要 许多计算机视觉应用需要实时解决多个任务。可以使用多任务学习来训练神经网络同时解决多个任务。这可以节省推理时的计算量&#xff0c;因为只需要评估单个网络。不幸的是&#xff0c;这通常会导致整体性能较差&#xff0c;因为任务目标可能会相互竞争&#xff0c;从而提出…

03-02、SpringCloud第二章,Eureka服务的注册与发现

SpringCloud从看不懂到放弃&#xff0c;第二章 一、Eureka服务的注册与发现 Eureka Netflix在设计Eureka时遵守的就是AP原则CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用…

【chrom插件】chrom插件数据通信问题

使用如下方式&#xff0c;执行工作js&#xff0c;但是工作js&#xff0c;读不到chrome存储的数据。 let worker new Worker(‘js/worker.js’, {type: ‘module’}); 所以通过消息的形式&#xff0c;来传输数据。 worker发送消息 function callbackLog(matchLog, successAr…

微服务即时通讯系统的实现(服务端)----(1)

目录 1. 项目介绍和服务器功能设计2. 基础工具安装3. gflags的安装与使用3.1 gflags的介绍3.2 gflags的安装3.3 gflags的认识3.4 gflags的使用 4. gtest的安装与使用4.1 gtest的介绍4.2 gtest的安装4.3 gtest的使用 5 Spdlog日志组件的安装与使用5.1 Spdlog的介绍5.2 Spdlog的安…

学习分享1

明确学习目标 明确学习目标是提高学习效率和效果的重要步骤。具体来说&#xff0c;这意味着在开始学习之前&#xff0c;你需要清楚地知道自己希望通过这段学习达到什么样的结果或掌握哪些知识与技能。 确定学习的具体内容&#xff1a;首先需要定义你想要学习的主题是什么&…