贪心算法学习——最大数

news/2025/2/12 21:23:19/

目录

​编辑

一,题目

二,题目接口

三,解题思路级代码


一,题目

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

二,题目接口

class Solution {public:string largestNumber(vector<int>& nums) {}};

三,解题思路级代码

这道题其实很好解决,关键步骤如下:

1.将我们的每一个数字转换成string类型的元素(注意不要转换为char类型,因为char类型转换时看的是ASSICA码)。

2.在将我们的数字转换成为字符串以后,我们便可以使用sort函数重写一个比较函数便可以得到答案了。

比较规则:

    首先我们先设两个数:a,b。先组成一个数ab.如果ab>ba那我们便可以不改变字符a和b的位置。如果ab<ba那我们就要改变位置变为ba。对于每一个字符串,sort函数都会使用字典序的方式帮我们排序。

代码如下:

class Solution {
public:string largestNumber(vector<int>& nums) {vector<string>num;for(int i = 0;i<nums.size();i++)//将数字转换成为string类型。{num.push_back(to_string(nums[i])) ;}sort(num.begin(),num.end(),[](const string& s1,const string& s2)//重新实现一个比较规则{return s1+s2>s2+s1;});string str;if(num[0] == "0")//如果第一个数字都是"0"的话那就肯定是一个0或者一串0的字符串。{return "0";//返回0}for(auto e:num)//如果不是那就取出str中的元素,给到str然后返回str。{str+=e;}return str;}
};

当然,在sort函数中重新实现的比较规则可能比较抽象,现在来个正常的:

class Solution {
public:static bool compare(const string& s1,const string s2)//重定义比较函数{return s1+s2>s2+s1;}string largestNumber(vector<int>& nums) {vector<string>ret;for(int i = 0;i<nums.size();i++){ret.push_back(to_string(nums[i]));}sort(ret.begin(),ret.end(), compare);//使用sort实现排序string str;for(auto& x:ret){str+=x;}if(str[0] == '0'){return "0";}return str;}
};


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

相关文章

Anaconda下载和安装

1.概述 1&#xff09;包含conda&#xff1a;conda是一个环境管理器&#xff0c;其功能依靠conda包来实现&#xff0c;该环境管理器与pip类似。 2&#xff09;安装大量工具包&#xff1a;Anaconda会自动安装一个基本的python&#xff0c;该python的版本Anaconda的版本有关。该…

基于数字电路交通灯信号灯控制系统设计-单片机设计

**单片机设计介绍&#xff0c;1617基于数字电路交通灯信号灯控制系统设计&#xff08;仿真电路&#xff0c;论文报告 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序文档 六、 文章目录 一 概要 交通灯控制系统在城市交通控制中发挥着重要的作用&#xf…

【C++】类与对象 第二篇(构造函数,析构函数,拷贝构造,赋值重载)

目录 类的6个默认成员函数 初始化和清理 1.构造函数 2.析构函数 3.共同点 拷贝复制 1.拷贝构造 使用细节 2.赋值重载 运算符重载 < < > > ! 连续赋值 C入门 第一篇(C关键字&#xff0c; 命名空间&#xff0c;C输入&输出)-CSDN博客 C入门 第二篇( 引…

时序预测 | Python实现ARIMA-LSTM差分自回归移动模型结合长短期记忆神经网络时间序列预测

时序预测 | Python实现ARIMA-LSTM差分自回归移动模型结合长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-LSTM差分自回归移动模型结合长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Python实现ARIMA-LSTM差…

Miniconda、Vscode下载和conda源、pip源设置

1、常用软件下载 1、Miniconda软件下载&#xff1a; windows网址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CS&OA 2、最新版Miniconda下载网址&#xff1a;https://docs.conda.io/projects/miniconda/en/latest/ 3、常用代码编辑器VsCode下…

[C++]——带你学习类和对象

类和对象——上 目录&#xff1a;一、面向过程和面向对象二、类的概念三、类的访问限定符和封装3.1 访问限定符3.2 封装 四、类的作用域五、类的实例化六、类的对象大小的计算七、类成员函数this指针7.1 this指针的引用7.2 this 指针的特性 目录&#xff1a; 类和对象是很重要…

Cookie技术

Cookie中文名称为小型文本文件&#xff0c;指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地终端上的数据。 Cookie是由服务器端生成&#xff0c;发送给User-Agent&#xff08;—般是浏览器&#xff09;&#xff0c;浏览器会将Cookie的key/value保存到某个目录下的文…

shell实现部署ftp提供共享yum仓库

shell 脚本实现脚本测试 脚本实现自动化配置vsftp&#xff0c;并共享opt目录给其它节点机器实现离线源配置 使用脚本需修改以下内容&#xff1a; ftp_ip为ftp服务器ip reponame为repo文件名字 dir为仓库目录&#xff0c;默认opt下 houzui为opt目录下的离线仓库&#xff0c;写入…