【力扣】2578. 最小和分割

news2024/11/19 0:22:07

【力扣】2578. 最小和分割

文章目录

  • 【力扣】2578. 最小和分割
    • 1. 题目介绍
    • 2. 思路
    • 3. 解题代码
    • 4. 疑问?
    • 5. Danger
    • 参考

1. 题目介绍

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

  • num1 和 num2 直接连起来,得到 num 各数位的一个排列。

换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。

  • num1 和 num2 可以包含前导 0 。
  • 请你返回 num1 和 num2 可以得到的和的 最小值

注意:

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

示例:
在这里插入图片描述
在这里插入图片描述

2. 思路

  • 1)对数字数位分割,得到 list 后排序,两个数字分别:

    • 你一位,我一位的拿。
    • 有0的话,固定放在第二位
  • 2)当我们将给定的 num 分成 num1 和 num2 时,num1 中的数字应该是单调递增的。否则,例如 nums1=1243,我们将 4 和 3 交换可以得到更小的值。同理,nums2 中的数字也应该是单调递增的。

    • 接下来我们考虑 num1 和 num2 之间的情况。设 num1 中有一个数字 xxx 是从低到高的第 p (p≥0) 位,表示 x×10p,num2 中有一个数字 y 是从低到高的低 q 位,表示 y×10q。我们交换 x 和 y,不应该得到更小的值,因此有:
      x×10p+y×10q≤x×10q+y×10p,即:(x−y)×(10p−10q)≤0,也就是说:如果 x 的位数更高(即 10p≥10q ,那么 x 必须不能大于 y);如果 y 的位数更高,那么 y 必须不能大于 x。
    • 结合之前得出的 num1 和 num2 分别是单调递增的,这就告诉我们:
      任何一个数字,都不能大于任何一个数中比它位数更小的数字。
    • 当 num1 和 num2 位数不相等时,我们需要补上前导零使得它们位数相等。例如,1234 和 5 是满足上述要求的,但 234 和 15 的和显然更小,这是因为我们需要把 5 看成 0005,那么 1234 中的 1 与 0[00]55 中括号部分的两个 0 是不满足要求的。这也就告诉我们,num1 和 num2 的位数差不能超过 1,否则位数少的那个数能补上至少 2 个前导零,其中不是最高位的那些前导零和位数多的那个数的最高位是不满足要求的。

因此,我们就可以得出最小和的分割方法:

  • 将 num 的数字进行递增排序;
  • 按照递增顺序,交替地将数字分配给 num1 和 num2

3. 解题代码

class Solution:
    def splitNum(self, num: int) -> int:
        stnum = "".join(sorted(str(num)))
        num1, num2 = int(stnum[::2]), int(stnum[1::2])
        return num1 + num2

4. 疑问?

貌似没有对前导0进行限制,比如现在的答案是:

  • 1024 分成:02 和14就行

5. Danger

力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。此外,力扣(LeetCode)致力于解决程序员技术评估、培训、职业匹配的痛点,逐步引领互联网技术求职和招聘迈向专业化。

  • 据了解到的情况,Easy题和Medium 题在面试中比较常见,通常会以手写代码之类的形式出现,您需要对问题进行分析并给出解答,并于面试官进行交流沟通,有时还会被要求分析时间复杂度8与空间复杂度°,面试官会通过您对题目的分析解答,了解您对常用算法的熟悉程度和您的程序实现功底。
  • 而在一些对算法和程序实现功底要求较高的岗位,Hard 题也是很受到面试官的青睐,如果您在面试中成功Bug-Free出一道Hard题,我们相信您一定会给面试官留下很深刻的印象,并极大增加拿到Offer的概率,据相关人士统计,如果您在面试成功解出一道Hard题,拿不到Offer的概率无限接近于0。
  • 所以,力扣中Easy和Medium相当于面试中的常规题,而Hard 则相当于面试中较难的题,解出—道Hard题,Offer可以说是囊中之物。

参考

【1】https://leetcode.cn/problems/split-with-minimum-sum/?envType=daily-question&envId=2023-10-09

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 入门

目录 1 Python介绍1.1 特点1.2 什么时候不应该用Python1.3 Python解释器 2 IDLE开发环境使用入门2.1 IDLE 两种模式2.2 IDLE常用快捷键 3 程序基本格式4 图形化程序设计5 绘制奥运五环 声明:本文作为自己的学习笔记,欢迎大家于本人学习交流,转…

联邦学习综述二

联邦学习漫画 联邦学习漫画链接: https://federated.withgoogle.com/ Federated Analytics: Collaborative Data Science without Data Collection 博客链接: https://blog.research.google/2020/05/federated-analytics-collaborative-data.html 本篇博客介绍了联邦分析&a…

JTS:10 Crosses

这里写目录标题 版本点与线点与面线与面线与线 版本 org.locationtech.jts:jts-core:1.19.0 链接: github public class GeometryCrosses {private final GeometryFactory geometryFactory new GeometryFactory();private static final Logger LOGGER LoggerFactory.getLog…

掌握 Web3 的关键工具:9大宝藏APP助你玩转区块链

Web3世界充满了无限机遇,但要掌握它,您需要合适的工具���。今天,我将为您介绍9款Web3必备APP,涵盖钱包、DEX、和工具三大类别。而且,我要特别强烈推荐一个强大的钱包——Bitget Wall…

CAN 通信-底层

本文主要以rockchip的rk3568平台基础,介绍can 控制器、硬件电路和底层驱动。 rk3568 CAN 控制器 概览 CAN(控制器区域网络)总线是一种稳健的车载总线标准,它允许微控制器和设备在没有主机计算机的应用中相互通信。它是一个基于消息的协议,最初是为了在汽车中多路…

Godot快速精通-从看懂英文文档开始-翻译插件

视频教程地址:https://www.bilibili.com/video/BV1t8411q7hw/ 大家好,我今天要和大家分享的是如何快速精通Godot,众所周知,一般一个开源项目都会有一个文档,对于有一定基础或者是理解能力强的同学,看文档比…

Qt QPair

QPair 文章目录 QPair 摘要QPairQPair 特点代码示例QPair 与 QMap 区别 关键字: Qt、 QPair、 QMap、 键值、 容器 摘要 今天在观摩小伙伴撸代码的时候,突然听到了QPair自己使用Qt开发这么就,竟然都不知道,所以趁没有被人发…

关于网络协议的若干问题(二)

1、网络号、IP 地址、子网掩码和广播地址的先后关系是什么? 答:当在一个数据中心或者一个办公室规划一个网络的时候,首先是网络管理员规划网段,一般是根据将来要容纳的机器数量来规划,一旦定了,以后就不好…

在 centos7 上安装Docker

1、检查linux内核 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。 uname -r 2、使用 root 权限登录 Centos…

商业化之路怎么走,一家开源分布式数据库厂商的答案|爱分析调研

01 商业化是衡量开源项目成功与否的重要维度之一 中国开源软件商业化公司的涌起以及资本对开源的持续关注,正打破人们对开源与商业化“互斥”的传统印象,展现出两者关系的真正本质,即开源和商业化可以相互促进、相互融合,协同发展…

Apache Doris (三十九):Doris数据导出 - MySQL dump导出

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

Spring Cloud 2023 新特性 同步网关

网关不支持传统 Servlet 容器 Spring Cloud Gateway 需要运行在提供的 Netty 运行时。它不能在传统的 Servlet 容器中工作,也不能在构建为 WAR 时工作。WebFlux 使用了异步非阻塞的编程模型,相较于传统的 MVC Servlet 需要理解和适应新的编程范式和响应…

Python之函数详解

一、函数的定义与调用 函数定义语法: def 函数名([参数列表]): ‘’‘注释’‘’ 函数体 注意事项 函数形参不需要声明类型,也不需要指定函数返回值类型即使该函数不需要接收任何参数,也必须保留一对空的圆括号 括号后面的冒号必不可少函数…

数据结构之堆的实现

首先我们要想堆应该用什么实现,我们这里可以使用数组,因为每一层的数是有限个的,所以我们可以很容易将数的每一个位置对应到数组中去。 那我们就可以仿照顺序表写出我们的结构。 然后我们要考虑我们要实现哪些函数。 最基本的功能初始化和销…

Jetson Orin NX 开发指南(6): VINS-Fusion-gpu 的编译和运行

一、前言 由于 Jetson 系列的开发板 CPU 性能不是很好,因此在处理图像数据时往往需要 GPU 加速,而 VINS-Fusion 是针对同步定位与建图(SLAM)问题中十分出色的视觉算法,但是其在图像处理过程中资源消耗较大&#xff0c…

TypeScript基础语法

👨 作者简介:大家好,我是Taro,前端领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录 前言一、TS是什么?二、使用步骤1.安装TS…

力扣刷题 day41:10-11

1.乘积最大子数组 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 方法一&…

图像特征算法---ORB算法的python实现

一、ORB算法 1.算法简介 ORB 是 Oriented Fast and Rotated Brief 的简称,可以用来对图像中的关键点快速创建特征向量,这些特征向量可以用来识别图像中的对象。 其中,Fast 和 Brief 分别是特征检测算法和向量创建算法。ORB 首先会从图像中…

Nginx常用操作命令

文章目录 前言Nginx常用操作指令查看Nginx版本号启动Nginx && 关闭Nginx重新加载Nginx 前言 我们在使用Nginx操作命令之前,我们必须要进入到Nginx的目录里面才可以。 指令1:   cd /usr/local/nginx/   指令2:    cd sbin 也可…

计算机毕业设计 it职业生涯规划系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…