贪心算法----最大数

今日题目:leetcode179------点击跳转题目

分析:

要把这些数组组成最大的数,首先我们把数字转化为字符串,根据自定义的排序规则把这些字符串字数排列,再用一个字符串接受这些字符串数字拼接成最大的字符串数字

排序规则:

对于两个字符串数字s1和s2,有两种拼接方式:s1+s2 或 s2+s1,如果前者更大,那么就让s1在s2的前面,如果后者更大,就让s2在s1的前面

代码:

class Solution {
public:
    static bool cmp(string s1, string s2)
    {
       return s1 + s2 > s2 + s1;
    }

    string largestNumber(vector<int>& nums) 
    {
        vector<string> v_str;
        for(auto x : nums) 
        {
            string str = to_string(x);
            v_str.push_back(str);
        }
        sort(v_str.begin(),v_str.end(),cmp);
        string ans;
        for(auto& x : v_str)
        {
            ans += x;
        }
        //特判:如果第一个就是0,说明后面的也都是0,只用输出一个0才符合数字特征
        if(ans[0] == '0') ans = "0";
        return ans;
    }
};

tips1:关于sort的自定义排序

bool cmp(T a,T b);
sort(左区间,右区间,cmp);

在自定义排序时,cmp函数的返回值用于判断两个元素是否需要交换顺序。如果cmp函数返回true,则表示两个元素a、b的顺序不变,不需要交换;如果cmp函数返回false,则表示两个元素a、b的顺序需要交换,sort函数会将它们交换位置。

我们只需根据想要的排序规则,来判断两个元素如果满足排序规则,就返回true,反之false

本题中,如果s1+s2 > s2+s1 ,则说明满足排序规则,返回true,故而我们可以直接返回这个表达式的bool值即可

tips2:为什么cmp函数要设置成静态函数?

在 C++ 中,sort函数需要一个普通的函数指针(或者可调用对象,比如 lambda 表达式、函数对象等),而不是类成员函数指针。

类成员函数(非静态)与普通函数有一个重要的区别:类成员函数隐式地传递了一个指向调用对象的指针(通常称为this指针)。因此,成员函数的签名与普通函数的签名不同,不能直接作为一个普通函数指针传递。

静态成员函数不依赖于特定对象,它们不需要this指针。因此,它们的签名与普通函数相同,可以作为普通函数指针传递。这就是为什么在这个例子中,cmp函数需要声明为静态成员函数的原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/623313.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UniGen:用于生成自动驾驶场景的初始智体状态和轨迹的统一建模

24年5月谷歌WayMo论文“UniGen: Unified Modeling of Initial Agent States and Trajectories for Generating Autonomous Driving Scenarios”。 本文介绍 UniGen&#xff0c;一种生成交通场景的新方法&#xff0c;用于通过仿真评估和改进自动驾驶软件。 其方法在一个统一的模…

探索大语言模型代理(Agent):研究背景、通用框架与未来展望

引言 近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;在智能代理&#xff08;Agent&#xff09;领域中的应用已成为研究的热点。这些代理不仅能够模拟人类的认知过程&#xff0c;还能在复杂的社会环…

智慧畜牧:RFID技术在现代屠宰场的应用

智慧畜牧&#xff1a;RFID技术在现代屠宰场的应用 RFID猪肉溯源管理解决方案是一种利用无线射频识别&#xff08;Radio Frequency Identification&#xff0c;简称RFID&#xff09;技术来实现猪肉从养殖、屠宰到销售整个供应链过程中的追踪与追溯的现代化管理手段。这一方案通…

【class】人工智能初步(了解深度学习)

任务二&#xff1a;对电脑图像的智能识别和自动分类之前 在实现对电脑图像的智能识别和自动分类之前&#xff0c;本节课我们先学习两个知识点&#xff1a;1. 计算机如何看世界&#xff1f; 揭秘计算机眼中的图像2. 计算机如何理解世界&#xff1f; 揭秘图像识别、深度学习 计…

图像质量评价指标:了解图像质量的度量方式

图像质量评价指标&#xff1a;了解图像质量的度量方式 在图像处理和计算机视觉领域&#xff0c;评价图像质量的准确性对于许多应用至关重要。通过合适的评价指标&#xff0c;我们可以量化图像的质量&#xff0c;从而更好地了解图像处理算法的效果和改进空间。本文将介绍图像质…

单链表经典算法OJ题---力扣21

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a;创建新的空链表&#xff0c;遍历原链表。将节点值小的节点拿到新链表中进行尾插操作 遍历的结果只有两种情况&#xff1a;n1为空 或 n2为空 注意&#xff1a;链表为空的情况 代…

程序员的神奇应用:从代码创造到问题解决的魔法世界之持续集成/持续部署

文章目录 持续集成/持续部署 在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 在当今数字化的世界里&…

GEE获取年均LAI(叶面积指数)和FPAR(光合有效辐射分量)

MODIS/061/MOD15A2H 组合了叶面积指数 (LAI) 和光合有效辐射分数 (FPAR) 产品是分辨率为 500m 的 8 天复合数据集。该算法从Terra传感器8天内的所有采集数据中选择了“最佳”像元。 var table ee.FeatureCollection("users/yipeizhao736/HefeiProvince"); var coll…

【C++初阶】第十一站:list的介绍及使用

目录 list的介绍及使用 1.list的含义 2.list的介绍 3.list的使用 1.list的构造 2.list iterator的使用 3.list capacity 4.list element access 5 list modifiers 尾插尾删 和 头插头删 insert 和 erase resize swap clear 6.list sort and reverse 7.list copy vector copy li…

设计一个游戏的基本博弈框架

设计一个游戏的基本博弈框架&#xff0c;玩家通过操作改变某个数值&#xff0c;这个数值的变动会引发一系列实时变化&#xff0c;并且当这些数值累计到特定阈值时&#xff0c;会导致游戏中出现其他变化&#xff0c;可以分为以下几个步骤&#xff1a; 1. 确定游戏类型和主题 首…

GH263-045、GH263-035比例阀用电磁铁驱动放大器

GH263-045、GH263-035比例阀用电磁铁用于比例变量泵和油马达的控制&#xff0c;通过改变比例阀芯位置&#xff0c;可实现对比例变量泵的输出流量或油马达 转矩和转速的无级调节和远程控制&#xff0c;驱动电流分为GH263-035&#xff08;0.68A&#xff09;/GH263-045&#xff08…

未授权访问:Docker未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、通过crontab反弹宿主机shell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验&#xff0c;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c;还有其他大佬总结好…

五、Linux二进制安装MariaDB 六、MariaDB主从复制

目录 五、Linux二进制安装MariaDB1 卸载mariadb1.1 卸载相关的服务(mysql和mariadb都查询一下)1.2 查找MySQL和mariadb相关的文件目录 2 安装mariadb2.1 mariadb下载地址2.2 将安装包放入到服务器中并解压 (我放到opt下)2.3 将解压后的目录移动到安装目录下2.4 创建数据目录(根…

miniconda环境管理器安装及jupyter下载

1.miniconda简介 Miniconda是一款小巧的python环境管理工具&#xff0c;安装包大约只有50M多点&#xff0c;其安装程序中包含conda软件包管理器和Python。一旦安装了Miniconda&#xff0c;就可以使用conda命令安装任何其他软件工具包并创建环境等。 2.下载miniconda 查看需要的…

虚拟数字人及AI相关应用分享

一、虚拟数字人 1、简介 虚拟数字人可分为基础类和仿真智能类。可用于直播的&#xff0c;一般是仿真智能类&#xff1b;基础类动作缓慢&#xff0c;体验差&#xff0c;很容易被直播平台封号。 目前各大短视频平台上介绍的数字人&#xff0c;出于营销目的&#xff0c;有夸大宣传…

基于单片机的直流电机测速装置研究与设计

摘要: 基于单片机的直流电机测速装置采用了对直流电机的中枢供电回路串联取样电阻的方式实现对电机转速的精确实时测量。系统由滤波电路、信号放大电路、单片机控制电路以及稳压电源等功能模块电路构成。工作过程中高频磁环作为载体&#xff0c;利用电磁感应的基本原理对直流电…

Redis-持久化操作-RDB

Redis持久化 由于Redis的数据都存放在内存中&#xff0c;如果没有配置持久化&#xff0c;Redis重启后数据就全丢失了&#xff0c;于是需要开启 Redis的持久化功能&#xff0c;将数据保存到磁盘上&#xff0c;当Redis重启后&#xff0c;可以从磁盘中恢复数据。 Redis提供了两个…

利用一段代码轻松绕过PHP授权系统

第一步&#xff1a;首先你需要改名全局文件 比如说全局文件 common.php&#xff0c;那么 你将他改为core.php 第二步&#xff1a;创建文件 创建一个文件&#xff0c;和改名前的全局文件名称一样&#xff0c;然后把以下代码复制进去就OK了 代码如下&#xff1a; <?php…

免费分享一套SpringBoot+Vue教务管理(课程管理)系统,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue教务管理(课程管理)系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue教务管理(课程管理)系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue教务管理(课程管理)系统 …

html5的一些新特性

最近总是碰到html5特性这种问题,虽然简单,但是也是自己平时不关注的东西,趁今天时间充裕,那就来总结一下吧 HTML5新特性包括新增了部分标签、表单元素增强、支持视频和音频、支持canvas绘图、提供web存储、提供地理定位功能、提供web workers机制、提供web socket协议、提供CS…