【LeetCode: 2578. 最小和分割 | 贪心】

本文介绍了如何使用贪心算法解决编程问题,即如何将一个正整数按要求分割成两个数,使得它们的和最小。通过升序排列数字并逐步组合,实现最小差值原则来找到答案。

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🚩 题目链接

⛲ 题目描述

给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足:

num1 和 num2 直接连起来,得到 num 各数位的一个排列。
换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。
num1 和 num2 可以包含前导 0 。
请你返回 num1 和 num2 可以得到的和的 最小 值。

注意:

num 保证没有前导 0 。
num1 和 num2 中数位顺序可以与 num 中数位顺序不同。

示例 1:

输入:num = 4325
输出:59
解释:我们可以将 4325 分割成 num1 = 24 和 num2 = 35 ,和为 59 ,59 是最小和。
示例 2:

输入:num = 687
输出:75
解释:我们可以将 687 分割成 num1 = 68 和 num2 = 7 ,和为最优值 75 。

提示:

10 <= num <= 109

🌟 求解思路&实现代码&运行结果


⚡ 贪心

🥦 求解思路
  1. 题目让我们求的是如何将一个数字拆分为俩个不同的数字,数字的顺序可以打乱,也就是任意组合,最终求解的是俩个数字的最小和。
  2. 因为顺序不影响最终的结果,所以,我们先对拆分后的数组升序排序。然后对其进行组合。
  3. 怎么组合呢?也就是贪心的规律所在,俩个数差距尽可能小的原则,进行组合。
  4. 怎么实现呢?对排序后的数组遍历,从左向右,将数字挨个分配给第一个数和第二个数。最终求和的结果就是答案。
  5. 具体求解的过程步骤请看下面代码。
🥦 实现代码
class Solution {

    private char[] c;
    private int n;
    
    public int splitNum(int num) {
        this.c=String.valueOf(num).toCharArray();
        Arrays.sort(c);
        this.n=c.length;
        int num1=getNumber(0);
        int num2=getNumber(1);
        return num1+num2;
    }

    public int getNumber(int flag){
        StringBuilder sb=new StringBuilder("");
        for(int i=flag;i<c.length;i+=2){
            sb.append(c[i]+"");
        }
        return Integer.parseInt(sb.toString());
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值