贪心算法----最大数

今日题目: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://xiahunao.cn/news/3030609.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

02c++模板部分讲解

1理解函数模板 #include<iostream> using namespace std;//函数模板 template<typename T> //定义一个模板参数列表 //模板类型参数 typename/class bool compare(T a, T b) {cout << "template compare: " << endl;return a > b; }temp…

Git详解之五:分布式Git

为了便于项目中的所有开发者分享代码&#xff0c;我们准备好了一台服务器存放远程 Git 仓库。经过前面几章的学习&#xff0c;我们已经学会了一些基本的本地工作流程中所需用到的命令。接下来&#xff0c;我们要学习下如何利用 Git 来组织和完成分布式工作流程。 特别是&#…

代码随想录算法训练营第36期DAY24

DAY24 235二叉搜索树的最近公共祖先 迭代法&#xff1a; /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solutio…

大势所趋!企业网站HTTPS升级全面普及化

JoySSL官网 注册码230918 HTTPS加密协议的应用无疑是维护网络信息安全的重要一环。随着技术的不断进步与用户隐私意识的增强&#xff0c;HTTPS加密已不再仅仅是大型企业的专属&#xff0c;而是逐渐成为所有企业网站的标准配置&#xff0c;其普及化趋势显而易见&#xff0c;堪称…

Kivy UI界面

一、版本介绍 Ubuntu&#xff1a;18.04.6 LTS Conda&#xff1a;4.5.12 Python&#xff1a;3.6.15 Kivy&#xff1a;2.0.0 二、安装Kivy # 更新系统包列表 sudo apt-get update# 安装Kivy的依赖项 sudo apt-get install -y python-pip libsdl2-dev libsdl2-image-dev li…

数据结构之链表篇

今天我们讲我们数据结构的另一个重要的线性结-----链表&#xff0c; 什么是链表 链表是一种在 物理存储上不连续&#xff0c;但是在逻辑结构上通过指针链接下一个节点的形成一个连续的结构。 他和我们的火车相似&#xff0c;我们的元素是可以类比成车厢&#xff0c;需要将⽕…

ubuntu22.04服务器docker-compose方式部署ldap服务

一&#xff1a;系统版本 二&#xff1a;部署环境 节点名称 IP 部署组件及版本 配置文件路径 机器CPU 机器内存 机器存储 Ldap 10.10.10.111 self-service-password:latest phpldapadmin:latest openldap:latest openldap:/data/openldap/config phpldapadmin&#x…

回炉重造java----双列集合(HashMap,TreeMap)

体系结构 ①基本操作: ②遍历方式: 第一种: 键找值&#xff0c;通过map.keySet()获取Map的键集合&#xff0c;通过键去匹配Map中的值 Set<String> strings map.keySet();for (String string : strings) {System.out.println(map.get(string));} 第二种: 键值对&…

【多模态】30、GPT4V_OCR | GPT4V 在 OCR 数据集上效果测评

文章目录 一、背景二、测评2.1 场景文本识别2.2 首先文本识别2.3 手写数学公式识别2.4 图表结构识别&#xff08;不考虑单元格中的文本内容&#xff09;2.5 从内容丰富的文档中抽取信息 三、讨论 论文&#xff1a;EXPLORING OCR CAPABILITIES OF GPT-4V(ISION) : A QUANTITATIV…

Android动态布局framelayout

功能说明 最近碰到一个需求&#xff0c;要求在网页端拖控件&#xff0c;动态配置app控件的模块&#xff0c;大小和位置&#xff0c;显示不同的功能&#xff0c;然后在app大屏展示。 技术难点&#xff1a; 1.动态控件位置和大小难调&#xff0c;会出现布局混乱&#xff0c;位置错…

2024-05-10 C语言使用开源的JPEG解码库libjpeg 读取JPEG文件并将其解码为RGB24格式的数据

一、可以使用开源的JPEG解码库&#xff0c;例如libjpeg库&#xff0c;来读取JPEG文件并将其解码为RGB24格式的数据。 二、在ubuntu上面进行测试。 2.1安装了libjpeg-dev包 sudo apt-get install libjpeg-dev 2.2 测试c源码 #include <stdio.h> #include <stdlib.h&…

虚拟化技术 分离虚拟机数据流量与ESXi的流量管理

一、实验内容 为ESXi主机添加网卡通过vClient查看已添加的网卡信息为ESXi添加网络&#xff0c;创建标准交换机修改网络配置&#xff0c;实现虚拟机数据流量与ESXi的管理流量分离 二、实验主要仪器设备及材料 安装有64位Windows操作系统的台式电脑或笔记本电脑&#xff0c;建…

Java入门基础学习笔记15——强制类型转换

大范围类型的变量是否可以赋值给小范围类型的变量呢&#xff1f; IDEA直接报错。直接报错&#xff0c;是提醒你有问题。但是我非常进行类型转换。 非要强行赋值呢&#xff1f; 强制类型转换&#xff0c;强行将类型范围大的变量&#xff0c;数据赋值给类型范围小的变量。 数据…

实用的Chrome命令 帮你打开Chrome浏览器的隐藏功能

前言 Chrome作为主力浏览器&#xff0c;支持相当丰富的第三方扩展&#xff0c;其实浏览器本身也内置了大量实用的命令。许多实用的功能并没有直接显示在Chrome的菜单上。在这篇文章中&#xff0c;我们将介绍几个实用的chrome:// commands。 通过下面整理的 Chrome 命令&#x…

霍金《时间简史 A Brief History of Time》书后索引(A--D)

图源&#xff1a;Wikipedia INDEX A Abacus Absolute position Absolute time Absolute zero Acceleration Age of the universe Air resistance Albrecht, Andreas Alpha Centauri Alpher, Ralph Anthropic principle Antigravity Antiparticles Aristotle Arrows of time …

权限束缚术--权限提升你需要知道这些

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要对渗透测试中权限提升的一些基础知识进行整理 并不包含权限提升的具体操作 适合要入门权限提升的朋友 提权的重要性 我们在渗透网站时&#xff0c;我们往往会拿到一些权限&#xff0c;但是我们的权限有…

全栈开发之路——前端篇(9)插槽、常用api和全局api

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…

【Java代码审计】代码审计的方法及常用工具

【Java代码审计】代码审计的方法及常用工具 代码审计的常用思路代码审计辅助工具代码编辑器测试工具反编译工具Java 代码静态扫描工具 代码审计的常用思路 1、接口排查&#xff08;“正向追踪”&#xff09;&#xff1a;先找出从外部接口接收的参数&#xff0c;并跟踪其传递过…

鸿蒙OpenHarmony开发板解析:【系统能力配置规则】

如何按需配置部件的系统能力 SysCap&#xff08;SystemCapability&#xff0c;系统能力&#xff09;是部件向开发者提供的接口的集合。 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 部件配置系统…

与队列和栈相关的【OJ题】

✨✨✨专栏&#xff1a;数据结构 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 目录 一、用队列实现栈&#xff1a; 1、2个队列的关联起来怎么由先进先出转变为先进后出&#xff1a;&#xff08;核心&#xff09; 2、认识各个函数干嘛用的&#xff1a; …