贪心算法----最大数

server/2024/9/23 2:31:15/

今日题目: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函数需要声明为静态成员函数的原因。


http://www.ppmy.cn/server/39533.html

相关文章

Windows系统和unbtun系统连接usb 3.0海康可见MVS和红外艾睿相机

一.海康可见USB3.0工业面阵相机 海康usb相机需要去海康官网上下载对应系统的MVS客户端及SDK开发包 海康机器人-机器视觉-下载中心 选择Windows系统和unbtun&#xff08;我是linux aarch64,所以选择了对应压缩包解压&#xff09; Windows系统 1.双击安装包进入安装界面&…

移动应用开发实验四AlarmManager实现闹钟提醒

实验目的和要求 在Android Studio中&#xff0c;通过AlarmManager实现闹钟提醒。 点击“SET ALARM”后&#xff0c;采用Toast方式提示用于设定的闹钟成功&#xff0c;并包含设定的闹钟启用时间。 当闹钟生效时&#xff0c;采用AlertDialog实现闹钟题型&#xff0c;并通过Ale…

笔记2024

[pip源] pip install xxx -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com https://pypi.doubanio.com/simple https://pypi.tuna.tsinghua.edu.cn/simple [docker] 查看镜像&#xff1a; docker ps docker images docker stop cooling_optimiza…

F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026、CVE-2024-21793)

0x01 产品简介 BIG-IP Next Central Manager是BIG-IP Next的原生默认用户界面,它可跨平台管理BIG-IP Next实例。BIG-IP Next是F5 Networks公司推出的一款下一代BIG-IP软件,提供了多云应用安全和应用交付服务。 0x02 漏洞概述 CVE-2024-26026:BIG-IP Next Central Manager…

ETL中如何执行Python脚本

Python的解读 Python 是一种高级、通用的编程语言&#xff0c;由荷兰程序员吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;于1990年代初设计并发布。Python的设计哲学强调代码的可读性和简洁性&#xff0c;它的语法清晰且表达力强&#xff0c;使得开发者能够以更少的代…

C++语法|可调用对象和函数对象

在本文中&#xff0c;我想先详细讲解C中的可调用对象和函数对象的定义&#xff0c;最后讲解二者的联系和区别 可调用对象 C中&#xff0c;可调用对象(Callable Object)是一个可以被调用执行的对象&#xff0c;类似于函数。任何类型的对象&#xff0c;主要的可调用对象有以下几…

【已解决】chrome/其他浏览器:你的连接不是私密连接

一、问题原因 这个问题一般是https的网址会有&#xff0c;它是安全的访问连接&#xff0c;在原来的基础上SSL/TLS协议进行加密和身份验证。 这里可能是证书过期了&#xff0c;其实 二、解决方法【亲测有效】 方法1&#xff1a;点击高级&#xff0c;如果有继续访问对应的http…

第Ⅷ章-Ⅰ 组合式API初识

第Ⅷ章-Ⅰ 组合式API初识 简介setup 函数 为什么要使用Composition API逻辑复用和组织更灵活的逻辑组合适应未来的 Vue 生态系统 options API存在的问题代码重复&#xff1a;逻辑分散缺乏复用性 Composition API 中的 setup()入口props 参数context 参数 ref 响应式监听reactiv…