当前位置: 首页 > news >正文

贪心算法学习——最大数

目录

​编辑

一,题目

二,题目接口

三,解题思路级代码


一,题目

给定一组非负整数 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.lryc.cn/news/208143.html

相关文章:

  • next项目部署到云服务器上(手动)
  • CG Magic分享3dmax软件安装与打开文件转圈圈怎么办?
  • 京东(天猫)数据分析:2023下半年茶饮料市场高速增长,东方树叶一骑绝尘
  • 软件测试之【单元测试、系统测试、集成测试】
  • 安装 tensorflow==1.15.2 遇见的问题
  • OJ刷题 第十八篇(递归篇)
  • 互联网产品说明书指南,附撰写流程与方法
  • 从JVM方面解释java传递问题
  • Oracle查询用户所有表的语句
  • Python轮廓追踪【OpenCV形态学操作】
  • 安全狗安装
  • HTTP发起请求与收到响应的大致过程
  • c++继承的小细节
  • 【分享】7-Zip压缩包的密码可以取消吗?
  • learning rate
  • 小型气象站数据采集网关准确监测雨量和风速
  • C++常见容器实现原理
  • Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
  • 使用Linux JumpServer 堡垒机进行远程访问
  • postgresql14管理(五)-tablespace
  • Echarts-3D柱状图
  • vue中组件传值 引用页面与组件页面绑定参数 vue省市地区街道级联选择组件
  • componentDidMount只执行一次的解决方法
  • React之diff原理
  • ElasticSearch中关于Nasted嵌套查询的介绍:生动案例,通俗易懂,彻底吸收
  • 系列二、Spring的优缺点是什么
  • ESP32网络开发实例-HTTP-GET请求
  • PHP:json_encode和json_decode用法
  • Kafka-Java二:Spring配置kafka消息发送端的缓冲区
  • 【ArcGIS模型构建器】05:批量为多个矢量数据添加相同的字段