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


    在这里插入图片描述

    🚀 算法题 🚀

    🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
    🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
    🌲 作者简介:硕风和炜,CSDN-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());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    🥦 运行结果

    在这里插入图片描述


    💬 共勉

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

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    高项_第十三章项目合同管理
    Android Studio中创建java项目
    Prometheus+Grafana可视化监控【ElasticSearch状态】
    Java基础深化和提高 ---- 函数式编程 Lambda
    Get To The Point: Summarization with Pointer-Generator Networks
    systrace使用注意事项
    ABA问题是什么?以及相关解决办法。
    Thrift RPC添加access log
    我的创作纪念日
    docker覆盖镜像默认命令之docker entrypoint
  • 原文地址:https://blog.csdn.net/Coder_ljw/article/details/133694547