首页 > 编程语言 >Leetcode 贪心算法之Largest Number

Leetcode 贪心算法之Largest Number

时间:2024-10-13 22:19:27浏览次数:8  
标签:return string nums Number a1 num Largest Leetcode a2

题目描述

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

实例

示例 1:
输入:nums = [10,2]
输出:“210”

示例 2:
输入:nums = [3,30,34,5,9]
输出:“9534330”

思路分析

利用贪心算法分析,只需要使高位的数字大于低位的数字。
一开始我直接对nums排序,然后用string接受之后直接return,但是发现上面所说的大于不是指数学上的大于,而是对于高位数开始比较的大于。
于是我对sort函数重写了比较函数mycompare,我一开始想利用取余来逐个比较高位数字的大小,再从大到小排序,但数字位数未知,不好操作。
于是我在网上查阅,发现我只要将函数内的两个数用string接收,然后按不同先后拼接这两个数字,这样我只需要比较字符串的大小即可。

代码展示

bool mycompare(int a,int b){
    string a1;
    string a2;
    a1+=to_string(a);
    a2+=to_string(b);
    if((a1+a2)>(a2+a1)){
        return true;
    }
    return false;
}



class Solution {
public:
    string largestNumber(vector<int>& nums) {
        string num;
        sort(nums.begin(),nums.end(),mycompare);
        for(int i=0;i<nums.size();i++){
            num+=to_string(nums[i]);
        }
        if(num[0]=='0') return "0";
        return num;
    }
};

运行结果

在这里插入图片描述
跳转原题点here

标签:return,string,nums,Number,a1,num,Largest,Leetcode,a2
From: https://blog.csdn.net/scsdvsvf/article/details/142905514

相关文章

  • [LeetCode] 315. 计算右侧小于当前元素的个数
    题目描述:给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是  nums[i] 右侧小于 nums[i] 的元素的数量。题目链接:.-力扣(LeetCode)题目主要思路:其实跟“LCR170.交易逆序对的总数”那道题差不多,就是多了个数组来......
  • Leetcode 1203. 项目管理
    1.题目基本信息1.1.题目描述有n个项目,每个项目或者不属于任何小组,或者属于m个小组之一。group[i]表示第i个项目所属的小组,如果第i个项目不属于任何小组,则group[i]等于-1。项目和小组都是从零开始编号的。可能存在小组不负责任何项目,即没有任何项目属于这个小组。请......
  • Leetcode--位运算
     小伙伴们,大家好。今天给大家介绍一下位运算。 首先给大家介绍一下常用的位运算符号: &(按位与) |(按位或)^(按位异或)<<(左移)>>(右移) 以a=4,b=6为例: 4的二进制为100,6的二进制为110(假设前名的0省略) a&b=100(每一位进行运算时如果均为1则该位为1否则为0) a|b=110(每......
  • 代码随想录Day24 | LeetCode 122. 买卖股票的最佳时机 II、LeetCode 55. 跳跃游戏、Le
    LeetCode122.买卖股票的最佳时机IIclassSolution:defmaxProfit(self,prices:List[int])->int:res=0foriinrange(1,len(prices)):res+=max(0,prices[i]-prices[i-1])returnresLeetCode55.跳跃游戏class......
  • Leetcode 贪心算法之 Container With Most Water
    题目描述给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例:输入:[1,8,6,2,5,4,8,3,7]输......
  • Leetcode 贪心算法之Jump Game II
    题目描述给定一个长度为n的0索引整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意nums[i+j]处:0<=j<=nums[i]i+j<n返回到达nums[n-1]的最小跳跃次数。生成的......
  • 【JavaScript】LeetCode:61-65
    文章目录61课程表62实现Trie(前缀树)63全排列64子集65电话号码的字母组合61课程表Map+BFS拓扑排序:将有向无环图转为线性顺序。遍历prerequisites:1.数组记录每个节点的入度,2.哈希表记录依赖关系。n=6,prerequisites=[[3,0],[3,1],[4,1],[4,2],[5,3],[5,4]]。0、1......
  • leetcode 179. Largest Number
    179.LargestNumber要比较拼接以后谁应该放在前面,先试着把他们拼起来就行了然后因为正着拼和反着拼,长度一致,所以自带的string比较函数会严格比较他们的大小关系,不会因为字符串长度而误判boolcmp(constint&a,constint&b);classSolution{public:std::string......
  • 代码随想录训练营第五天|Leetcode.349,Leetcode.454,Leetcode19,Leetcode18
    一、哈希表和set和map和数组的关系 用哈希表,判断是否出现过。数值很大或者数值很分散时,不用数组,占用空间大,用set。set,multiset数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。set是一个集合,里面放的元素只能是一个key,而两数之和这道题目,不仅要判......
  • Leetcode 1192. 查找集群内的关键连接
    1.题目基本信息1.1.题目描述力扣数据中心有n台服务器,分别按从0到n-1的方式进行了编号。它们之间以服务器到服务器的形式相互连接组成了一个内部集群,连接是无向的。用connections表示集群网络,connections[i]=[a,b]表示服务器a和b之间形成连接。任何服务器都可......