179. 最大数(LeetCode)

news2024/11/28 6:41:46

文章目录

  • 前言
  • 一、题目讲解
  • 二、算法原理
  • 三、代码编写
    • 1.仿函数写法
    • 2.lambda表达式
  • 四、验证
  • 五.总结


前言

在本篇文章中,我们将会带着大家采用贪心的方法解决LeetCode中最大数这道问题!!!

一、题目讲解

在这里插入图片描述

一组非负整数,包括0,要求把这些数合并起来,形成一个最大的整数。
我们具体来看看一下示例1:
两个整数,10,2。可以组成的情况有两种,102和210。
由于210大于102,所以我们返回210.

可能有很多数,拼接起来就非常大,超出整形的范围,所以要求我们最终按照字符串形式返回。

二、算法原理

本质:确定元素的先后顺序,谁在前,谁在后

我们首先来回顾一下我们之前学过的排序算法,我们以降序为例

两个数a和b:
🌟如果a>b,a在前,b在后
🌟如果a=b,a,b谁在前无所谓
🌟如果a<b,b在前,a在后

我们在来看一下本道题,也是一种排序规则,
两个数a和b:
🌟如果ab>ba,a在前,b在后
🌟如果ab=ba,a,b谁在前无所谓
🌟如果ab<ba,b在前,a在后
我们知道了这里,只需要把库里的排序函数按照我们的规则进行排序就可以实现了

贪心:谁比较好,把谁放在前面

三、代码编写

优化:把数转化成字符串,拼接字符串,比较字典序

我们可能遇到这种情况,nums[ ]={0,0,0};
最终我们拼接完成之后就是:“000”。

这时我们直接返回字符串0就可以。

1.仿函数写法

class Solution {
public:
    //仿函数
    struct cmp
    {
        bool operator()(string&s1,string&s2)
        {
            return s1+s2>s2+s1;
        }
    };
    string largestNumber(vector<int>& nums) 
    {
        vector<string> v;
        //转化成字符串
        for(auto&e:nums)
        {
            v.push_back(to_string(e));
        }
        //按照我们的升序规则进行排序
        //注意比较的cmp怎莫写
        sort(v.begin(),v.end(),cmp());
        //连接
        string str;
        for(auto&e:v)
        {
            str+=e;
        }
        //特殊处理
        if(str[0]=='0')
        {
            return "0";
        }
        else 
        {
            return str;
        }
    }
};

2.lambda表达式

class Solution {
public:
    string largestNumber(vector<int>& nums) 
    {
        vector<string> v;
        //转化成字符串
        for(auto&e:nums)
        {
            v.push_back(to_string(e));
        }
        //按照我们的升序规则进行排序
        //注意比较的cmp怎莫写
        sort(v.begin(),v.end(),[](string&s1,string&s2)
        {
            return s1+s2>s2+s1;
        });
        //连接
        string str;
        for(auto&e:v)
        {
            str+=e;
        }
        //特殊处理
        if(str[0]=='0')
        {
            return "0";
        }
        else 
        {
            return str;
        }
    }
};

四、验证

我们从一堆数中任意选择两个元素,按照我们的规则,如果满足全序关系就可以排序。

首先介绍一下全序关系的三个性质
🌟1.完全性
我们随机选择的两个元素a,b,一定满足下面条件中的一个
a<=b或者a>=b,也就是说可以进行大小的比较
🌟2.反对称性
两个元素a,b,满足a<=b并且a>=b可以推导出a==b
也就是a,b的前后顺序无所谓,因为排序之后是唯一确定的。
🌟3.传递性
任意三个元素a,b,c
如果a>=b并且b>=c我们可以推导出a>=c;

我们只要证明了我们的关系满足这三个性质,就可以进行排序
证明:
我们假设a有x位,b有y位
🌟1.完全性
在这里插入图片描述

🌟2.反对称性
在这里插入图片描述

🌟3.传递性
在这里插入图片描述

五.总结

以上就是今天要讲的内容,本文仅仅详细介绍了 最大数这道题的内容。希望对大家的学习有所帮助,仅供参考 如有错误请大佬指点我会尽快去改正 欢迎大家来评论~~ 😘 😘 😘

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

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

相关文章

机器学习的指标评价

之前在学校的小发明制作中&#xff0c;在终期答辩的时候&#xff0c;虽然整个项目的流程都答的很流畅。 在老师提问的过程中&#xff0c;当老师问我recall,precision,accuracy等指标是如何计算的&#xff0c;又能够表示模型的哪方面指标做得好。我听到这个问题的时候&#xff…

信息系统项目管理师0076:应用集成(5信息系统工程—5.3系统集成—5.3.5应用集成)

点击查看专栏目录 文章目录 5.3.5应用集成5.3.5应用集成 随着网络和互联网的发展以及分布式系统的日益流行,大量异构网络及各计算机厂商推出的软、硬件产品分布在分布式系统的各层次(如硬件平台、操作系统、网络协议、计算机应用),乃至不同的网络体系结构上都广泛存在着互操…

10.通用定时器

驱动电机 RGB LED亮度&#xff08;呼吸灯&#xff09; 舵机&#xff08;遥控车、机械臂&#xff09; 通用定时器作用 1.延时 2.定时器更新中断 3.输出比较&#xff08;PWM波、驱动IO输出波形&#xff08;脉冲&#xff09;&#xff09; 4.输入捕获&…

VMware安装ubuntun虚拟机使用桥接模式无法上网问题解决

问题&#xff1a;最近准备使用VMware虚拟机搭建k8s集群服务&#xff0c;因为需要在同一个网段下&#xff0c;我使用桥接的方式&#xff0c;我发现主机在使用有线连接时虚拟机网络连接正常&#xff0c;但是使用无线网就显示连接不上网络。 解决方法 一、查看网络连接&#xff…

Codeforces Round 941 (Div. 2)(A-D)

A. Card Exchange&#xff08;思维 Problem - A - Codeforces 题目大意&#xff1a; 给定n张牌&#xff0c;每次选k张相同的牌&#xff0c;把他们变成k-1张任意的牌&#xff0c;求最后手中最少能有几张牌。 思路&#xff1a; 直接判断这n张牌当中有没有k张一样的牌&#xff0c…

Python快速入门1数据类型(需要具有编程基础)

数据类型&#xff1a; Python 3.0版本中常见的数据类型有六种&#xff1a; 不可变数据类型可变数据类型Number&#xff08;数字&#xff09;List&#xff08;列表&#xff09;String&#xff08;字符串&#xff09;Dictionary&#xff08;字典&#xff09;Tuple&#xff08;元…

NLP transformers - 文本分类

Text classification 文章目录 Text classification加载 IMDb 数据集Preprocess 预处理EvaluateTrainInference 本文翻译自&#xff1a;Text classification https://huggingface.co/docs/transformers/tasks/sequence_classification notebook : https://colab.research.googl…

明日周刊-第8期

现在露营的人越来越多了&#xff0c;都是带着帐篷或者遮阳篷聚在一起喝喝茶聊聊天&#xff0c;这是一种很好的放松方式。最近我养了一只金毛&#xff0c;目前两个月大&#xff0c;非常可爱。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、人工智能领域 本周&#xff…

Java面试八股之main方法的参数中字符串数组的第一个元素是什么

Java main方法的参数中字符串数组的第一个元素是什么 Java main 方法的参数中字符串数组的第一个参数通常是指命令行启动Java应用程序时传递给该程序的第一个命令行参数。当您在命令行中执行一个Java应用程序&#xff0c;可以跟随类名后面附加一系列参数&#xff0c;这些参数将…

Debian 系统设置SSH 连接时长

问题现象&#xff1a; 通过finalshell工具连接Debian系统远程操作时&#xff0c;总是一下断开一下断开&#xff0c;要反复重新连接 &#xff0c;烦人&#xff01; 解决办法&#xff1a; 找到ssh安装目录下的配置文件&#xff1a;sshd_config vi sshd_config &#xff1a; 找到…

李沐70_bert微调——自学笔记

微调BERT 1.BERT滴哦每一个词元返回抽取了上下文信息的特征向量 2.不同的任务使用不同的特性 句子分类 将cls对应的向量输入到全连接层分类 命名实体识别 1.识别应该词元是不是命名实体&#xff0c;例如人名、机构、位置 2.将非特殊词元放进全连接层分类 问题回答 1.给…

Android --- 常见UI组件

TextView 文本视图 设置字体大小&#xff1a;android:textSize"20sp" 用sp 设置颜色&#xff1a;android:textColor"#00ffff" 设置倍距(行距)&#xff1a;android:lineSpacingMultiplier"2" 设置具体行距&#xff1a;android:lineSpacingExtra&q…

闲话 ASP.NET Core 数据校验(二):FluentValidation 基本用法

前言 除了使用 ASP.NET Core 内置框架来校验数据&#xff0c;事实上&#xff0c;通过很多第三方框架校验数据&#xff0c;更具优势。 比如 FluentValidation&#xff0c;FluentValidation 是第三方的数据校验框架&#xff0c;具有许多优势&#xff0c;是开发人员首选的数据校验…

kyuubi、sparksql部署实战与连接

一、下载spark和kyuubi的软件包 spark官网下载 https://spark.apache.org/downloads.html kyuubi官网下载 https://www.apache.org/dyn/closer.lua/kyuubi/kyuubi-1.9.0/apache-kyuubi-1.9.0-bin.tgz 二、部署spark 1、spark配置spark-env.sh YARN_CONF_DIR/opt/cloudera…

大象机器人开源协作机械臂myCobot 630 全面升级!

1. 开篇概述 在快速发展的机器人技术领域中&#xff0c;Elephant Robotics的myCobot 600已经证明了其在教育、科研和轻工业领域的显著适用性。作为一款具备六自由度的机械臂&#xff0c;myCobot 600以其600mm的工作半径和2kg的末端负载能力&#xff0c;满足了多样化的操作需求。…

paddleocr C++生成dll

目录 编译完成后修改内容: 新建ppocr.h头文件 注释掉main.cpp内全部内容&#xff0c;将下面内容替换进去。ppocr.h需要再环境配置中包含进去头文件 然后更改配置信息&#xff0c;将exe换成dll 随后右击重新编译会在根目录生成dll,lib文件。 注意这些dll一个也不能少。生成…

HTML5(2)

目录 一.列表、表格、表单 1.列表标签 2.表格 4.无语义的布局标签 5.字符实体 6.综合案例--1 7.综合案例--表单 一.列表、表格、表单 1.列表标签 1.1 无序列表 1.2 有序列表 1.3 定义列表 定义列表一般用于网页底部的帮助中心 2.表格 2.1 2.2 表格结构标签 shiftaltf 格…

计算机网络之传输层TCP\UDP协议

UDP协议 用户数据报协议UDP概述 UDP只在IP数据报服务之上增加了很少功能&#xff0c;即复用分用和差错检测功能 UDP的主要特点&#xff1a; UDP是无连接的&#xff0c;减少开销和发送数据之前的时延 UDP使用最大努力交付&#xff0c;即不保证可靠交付&#xff0c;可靠性由U…

《Fundamentals of Power Electronics》——全桥型隔离降压转换器

以下是关于全桥型隔离降压转换器的相关知识点&#xff1a; 全桥变压器隔离型降压转换器如下图所示。 上图展示了一个具有二次侧绕组中心抽头的版本&#xff0c;该电路常用于产生低输出电压。二次侧绕组的上下两个绕组可以看作是两个单独的绕组&#xff0c;因此可以看成是具有变…

#const成员

基于写的日期类的实现&#xff0c;去分析const成员的问题。 需要用到下面的两个函数。 这个时候我们去构建一个const Date,如下&#xff0c;这是不和法的&#xff0c;为什么呢&#xff1f; 其实这里涉及一个权限放大的问题&#xff0c;之前就说了&#xff0c;权限可以缩小&…