当前位置: 首页 > article >正文

Java贪心算法每日一题——179.最大数

题目链接:. - 力扣(LeetCode)

一、解题思想

        将数组中的数重新排列,组成一个最大的整数。这题无法单纯的从对数字大小的比较得出排列结果。

        所以,我们不能仅通过数字大小来排序,而应该是以组合完的大小进行排序。排序能顺利进行有三个重要条件

1、排序的完全性

        排序的完全性即,排序是能够比较大小的。要么是 A>=B,要么是B>=A。

2、排序的反对称性

        反对称性即需要证明 AB <= BA 且 AB >= BA,则 AB = BA。

3、排序的传递性

二、题解代码

class Solution {
    public String largestNumber(int[] nums) {
        //优化:把所有数字转换为字符串,通过比较字典序来判断大小
        int n = nums.length;
        String[] strs = new String[n];
        for(int i = 0;i < n;i++) {
            //转换为字符串
            strs[i] = ""+nums[i];
        }

        //排序
        Arrays.sort(strs,(a,b) -> {
            return (b+a).compareTo(a+b);
        });

        //提取结果,使用StringBuffer来拼接
        StringBuffer ret = new StringBuffer();
        for(String s:strs) {
            ret.append(s);
        }

        //如果首位为0,说明这个字符串都是0
        if(ret.charAt(0) == '0') {
            return "0";
        }
        return ret.toString();
    }
}


http://www.kler.cn/a/301746.html

相关文章:

  • 基于Java Web 的家乡特色菜推荐系统
  • ubuntu22 安装 minikube
  • 正则表达式常用字符
  • Markdown中输入空格的几种不同方式
  • 【机器学习】机器学习中用到的高等数学知识-1.线性代数 (Linear Algebra)
  • 【Python进阶】Python中的数据库交互:使用SQLite进行本地数据存储
  • 【QT】Qt窗口
  • Pr:序列设置 - VR 视频
  • 【区块链 + 基层治理】社区防疫管理平台 | FISCO BCOS应用案例
  • 404 error when doing workload anlysis using locust on OpenAI API (GPT.35)
  • 【深度学习 Pytorch】深入浅出:使用PyTorch进行模型训练与GPU加速
  • 泛零售行业的营销自动化现状如何?
  • Vue3+vite使用i18n国际化
  • 军事目标无人机视角检测数据集 3500张 坦克 带标注voc
  • 剖析 MySQL 数据库连接池(C++版)
  • Docker简介在Centos和Ubuntu环境下安装Docker
  • 详细介绍 Redis 列表的应用场景
  • 【三刷C语言】各种注意事项
  • 常用Java API
  • c# resource en-US
  • 4.qml单例模式
  • 智能医学(四)——Elsevier特刊推荐
  • 科技之光,照亮未来之路“2024南京国际人工智能展会”
  • 系统架构设计师:数据库设计
  • 【MySQL】了解并操作MySQL的缓存配置与信息
  • HarmonyOS 4.0增强的安全性