leetcode题解179-最大数
问题描述
给定一组非负整数 nums,重新排列它们每个数字的顺序(每个数字不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1:
输入:nums = [10,2]
输出:"210"
示例 2:
输入:nums = [3,30,34,5,9]
输出:"9534330"
示例 3:
输入:nums = [1]
输出:"1"
示例 4:
输入:nums = [10]
输出:"10"
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 109
解题思路:
此题求拼接起来的最大数字,本质上是一个排序问题。设数组 nums中任意两数字的字符串为x 和y ,
则规定排序判断规则为:
若拼接字符串x+y>y+x,则x大于y,我们可以把x放在前面
否则,y大于x,我们可以把x放在后面。
一旦数组排好了序,最“重要/大”的数字会在最前面。
有一个需要注意的情况是如果数组只包含 0 ,我们直接返回结果 0 即可。
否则,我们用排好序的数组形成一个字符串并返回。
实现代码
class Solution {public String largestNumber(int[] nums) {int n=nums.length;/*因为Java提供的比较器的参数必须是对象类型,所以这里需要把nums数组中的元素值都复制Integer中*/Integer onums[]=new Integer[n];for(int i=0;i<n;i++){onums[i]=nums[i];}/*此题求拼接起来的最大数字,本质上是一个排序问题。设数组 nums中任意两数字的字符串为x 和y ,则规定排序判断规则为:若拼接字符串x+y>y+x,则x大于y,我们可以把x放在前面否则,y大于x,我们可以把x放在后面。一旦数组排好了序,最“重要/大”的数字会在最前面。*/Arrays.sort(onums,new Comparator<Integer>(){public int compare(Integer x,Integer y){String sx=String.valueOf(x); //将数值转换为字符串String sy=String.valueOf(y);String xy=sx+sy;String yx=sy+sx;int n=xy.length();//比较xy和yx的大小,从高位逐位进行比较。如果都一样大,返回0。如果xy大,返回-1,否则返回1for(int i=0;i<n;i++){int a=xy.charAt(i)-'0';int b=yx.charAt(i)-'0';if(a>b){return -1;}else if(a<b){return 1;}else{continue;}}return 0;}});int j;/*有一个需要注意的情况是如果数组只包含 0 ,我们直接返回结果 0 即可。否则,我们用排好序的数组形成一个字符串并返回。*/for(j=0;j<n;j++){if(onums[j]!=0){break;}}if(j==n){return "0";}//使用stringbuffer能提高效率StringBuffer sb=new StringBuffer();//从前往后添加最“大”的数for(int i=0;i<n;i++){sb.append(String.valueOf(onums[i]));}//返回值是String类型return sb.toString();}
}
leetcode题解179-最大数相关推荐
- 【LeetCode】179. 最大数
文章目录 题目[179. 最大数](https://leetcode-cn.com/problems/largest-number/) 解题思路 注意: 步骤: 代码 题目179. 最大数 给定一组非 ...
- leetcode 179.最大数
leetcode 179.最大数 题干 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数. 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数. 示例 ...
- 算法与数据结构+LeetCode题解-Js版
LeetCode题解Js版 https://webbj97.github.io/leetCode-Js/ 题外话 LeetCode题解:传送门 前端笔记:传送门 项目背景 旨在提高自己对算法的理解,将 ...
- 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!
转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...
- PHP版Leetcode题解开始随缘更新
2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...
- [LeetCode 题解]: Binary Tree Preorder Traversal
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a binary ...
- LeetCode 题解汇总
为什么80%的码农都做不了架构师?>>> LeetCode 题解汇总 转载于:https://my.oschina.net/michao/blog/801863
- leetcode题解【持续更新】
leetcode题解不断更新,以及nowcoder题解.一起加油! 完整请移步我的Github 转载于:https://juejin.im/post/5c8a73d8f265da2de80fa774
- 179. 最大数 golang (自定义sort)
179. 最大数 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 ...
- 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解
点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
最新文章
- SCOM 2012知识分享-26:分布式部署要点总结
- 自动化测试8大元素定位之xpath语法
- 窗口不小心拉到任务栏下面,窗口无法拖回桌面的解决办法
- 如何定义一个有效的OWIN Startup Class
- 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5
- C 与 JAVA 的对比分析
- 相机标定原理和opencv代码解析
- 02_反汇编_反编译
- SQL SERVER 只有MDF文件的恢复
- vue-router-2-动态路由配置
- [Java] Java常见错误
- PAT 1083. 是否存在相等的差 (20) - 乙级
- 最佳String判断是否为空
- Oracle账户的umask,AIX的Umask
- Fire! (双bfs+预处理)
- 七牛云这个API,让我轻松搞定Banner背景自动切换的功能
- Android11以上版本使用高德定位,定位成功,卫星数一直为0
- Android 双usb 摄像头支持
- 基金什么时候买入好?
- c语言中的多线程的实现
热门文章
- 携号转网时间明确了: 下半年在全国实施!
- 支付宝集五福活动参与人数超4.5亿 你分到了多少?
- 学习爬虫过程中遇到的问题总结
- ps如何修改图片大小尺寸_如何查看图片尺寸,大小及如何修改图片尺寸—淘宝美工入门课03...
- Golang实践录:使用gin框架实现转发功能:一些负载均衡算法的实现
- mysql数据库主主_MySQL主主复制(图文详解)
- python 加快计算速度_python怎么提高计算速度
- 使用base标签后图片无法加载_Spring 源码学习(二)-默认标签解析
- mybatisplus查询今天的数据_springboot集成mybatisPlus
- python创建一个csv文件_python操作csv文件