• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

黄文超

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

【LeetCode每日一题】最大数

最大数

1、题目描述

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

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

示例 1:

输入:nums = [10,2]
输出:"210"

示例 2:

输入:nums = [3,30,34,5,9]
输出:"9534330"

示例 3:

输入:nums = [1]
输出:"1"

示例 4:

输入:nums = [10]
输出:"10"

2、算法描述

思想:
	想尽办法让头部数字大的放在前面,如果头部数字一样的话,那么久比较A+B和B+A组合后的数字大小
	若A+B大的话,A在前B在后,反之B在前,A在后
具体实现:
	1、从第一个数字开始排序,找首位数字最大的数字排在最前面。
	2、如果发现A和B的首字母相等,比较A+B和B+A的大小,若A+B大的话,A在前B在后,反之B在前,A在后
	3、数组排序后,用一个StringBuffer接收,然后字符串的方式输出。
	4、考虑特殊情况,可能会出现"00","000".....等等,结果为0,但是首位是0,此时我们就把0返回回去就行

3、具体实现

class Solution {
    public String largestNumber(int[] nums) {
        nums = this.sort(nums);
        StringBuffer s = new StringBuffer();
        for (int num:nums) {
            s.append(num);
        }
        if (s.length() >=2 && s.charAt(0) == '0') {
            return "0";
        } else {
            return s.toString();
        }
    }

    public int[] sort(int[] nums) {
        int temp;
        for (int i=0;i<nums.length-1;i++) {
            String self = nums[i] + "";
            for (int j=i+1;j<nums.length;j++) {
                String next = nums[j] + "";
                if (self.charAt(0) < next.charAt(0)) {
                    temp = nums[i];
                    nums[i] = nums[j];
                    nums[j] = temp;
                    self = nums[i] + "";
                }
                if (self.charAt(0) == next.charAt(0)) {
                    if (Long.parseLong(self + next) < Long.parseLong(next + self)) {
                        temp = nums[i];
                        nums[i] = nums[j];
                        nums[j] = temp;
                        self = nums[i] + "";
                    }
                }
            }
        }
        return nums;
    }
}

posted on 2021-04-12 14:53  黄文超  阅读(318)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3