【LeetCode:2698. 求一个整数的惩罚数 | 递归】

news2024/9/21 22:44:09

在这里插入图片描述

🚀 算法题 🚀

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

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 递归
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 2698. 求一个整数的惩罚数

⛲ 题目描述

给你一个正整数 n ,请你返回 n 的 惩罚数 。

n 的 惩罚数 定义为所有满足以下条件 i 的数的平方和:

1 <= i <= n
i * i 的十进制表示的字符串可以分割成若干连续子字符串,且这些子字符串对应的整数值之和等于 i 。

示例 1:

输入:n = 10
输出:182
解释:总共有 3 个整数 i 满足要求:

  • 1 ,因为 1 * 1 = 1
  • 9 ,因为 9 * 9 = 81 ,且 81 可以分割成 8 + 1 。
  • 10 ,因为 10 * 10 = 100 ,且 100 可以分割成 10 + 0 。
    因此,10 的惩罚数为 1 + 81 + 100 = 182
    示例 2:

输入:n = 37
输出:1478
解释:总共有 4 个整数 i 满足要求:

  • 1 ,因为 1 * 1 = 1
  • 9 ,因为 9 * 9 = 81 ,且 81 可以分割成 8 + 1 。
  • 10 ,因为 10 * 10 = 100 ,且 100 可以分割成 10 + 0 。
  • 36 ,因为 36 * 36 = 1296 ,且 1296 可以分割成 1 + 29 + 6 。
    因此,37 的惩罚数为 1 + 81 + 100 + 1296 = 1478

提示:

1 <= n <= 1000

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


⚡ 递归

🥦 求解思路
  1. 这是一道典型的递归题目,遍历给定的n个数,假设当前的数字为target,然后判断将numnum相乘后的数进行拆分,是否可以组成target。如果是的话,将numnum的值累加到最终的结果上。
  2. 递归总体实现思路一样,但是一些细节的地方需要注意,实现的方式有俩种,一种我们可以通过截取字符串的方式,另外一种,可以通过数值运算求解。
  3. 具体求解的过程步骤请看下面代码。
🥦 实现代码
class Solution {
    public int punishmentNumber(int n) {
        int ans=0;
        for(int i=1;i<=n;i++){
            int num=i*i;
            if(process(String.valueOf(num),0,0,i)){
                ans+=num;
            }
        }
        return ans;
    }

    public boolean process(String s,int i,int sum,int target){
        int n=s.length();
        if(i>=n) return sum==target;
        for(int j=i;j<n;j++){
            int num=Integer.parseInt(s.substring(i,j+1));
            if(num+sum<=target&&process(s,j+1,sum+num,target)){
                return true;
            }
        }
        return false;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

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

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Mac 超好用的工具推荐

Arc Arc 是 2022 年 4 月发布的浏览器产品&#xff0c;在介绍 Arc 浏览器之前&#xff0c;让我们来看下以 Chrome、FireFox、Edge、Safari 为代表的的传统浏览器&#xff1a; 难怪《浏览器是怎么工作的》作者 Paul Irish 曾说&#xff0c;尽管 W3C 并未规范浏览器界面&#xf…

Python深度学习实战-基于class类搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 上篇文章介绍了用Squential搭建BP神经网络&#xff0c;Squential可以搭建出上层输出就是下层输入的顺序神经网络结构&#xff0c;无法搭出一些带有跳连的非顺序网络结构&#xff0c;这个时候我们可以选择类class搭建封装神经网络结构。 第一步&#xff1a;import ten…

手机扫描二维码的测试用例

二维码概述 二维码本身就是一个URL&#xff0c;只是通过QR码的形式把URL和用户身份信息转换成二进制的0和1&#xff0c;二维码中黑色的色素块代表1&#xff0c;白色的色素块代表0&#xff0c;我们通过相机扫码&#xff0c;就获取了二维码中的URL。 ****测试用例罗列&#xff08…

通过IP地址可以做什么

通过IP地址可以做很多事情&#xff0c;因为它是互联网通信的基础之一。本文将探讨IP地址的定义、用途以及一些可能的应用。 IP地址的用途 1. 设备标识&#xff1a;IP地址用于标识互联网上的每个设备&#xff0c;这包括计算机、服务器、路由器、智能手机等。它类似于我们日常生…

美摄AR人像美颜,全新视觉体验

企业越来越重视通过视觉媒体来提升品牌形象和吸引客户。然而&#xff0c;传统的摄影技术往往无法满足企业对于高质量、个性化视觉内容的需求。这时&#xff0c;美摄AR人像美颜解决方案应运而生&#xff0c;它以其独特的技术和优势&#xff0c;为企业带来了全新的视觉体验。 美…

解读意大利葡萄酒分类系统

由于该国众多的产区和复杂的品种&#xff0c;要想真正掌握意大利葡萄酒是相当困难的。仅仅是试图从复杂混乱的葡萄酒标签中辨别信息的想法就足以让许多人焦虑不安。 位于托斯卡纳的基安蒂酒地区&#xff0c;Il Ciliegio生产的葡萄酒标签上包含以下名称之一:基安蒂酒科利塞内西…

2-Java进阶知识总结-3-集合

文章目录 补充知识-泛型版本信息泛型类常见泛型标识符泛型应用实例注意事项 泛型方法非静态的泛型方法静态的泛型方法&#xff1a;必须声明出自己独立的泛型 泛型接口泛型通配符 补充知识-树基本概念二叉树-普通二叉树二叉树-二叉查找树添加节点流程优点、不足 二叉树-平衡二叉…

了解松散类型

目录 松散类型带来的优势 灵活性和便利性 快速原型开发 动态类型 松散类型的注意事项 类型转换 隐式类型转换 如何正确使用松散类型&#xff1f; 动态类型 便捷的类型转换 灵活性与易用性 潜在的隐式类型转换 避免混淆和错误 当谈到JavaScript编程语言时&#xff…

app拉新平台推广渠道,地推网推接单神器

地推或网推不知道在哪里接单&#xff1f;信息差太大导致价格参差不齐&#xff0c;聚量推客人人高价置顶 聚量推客自己本身是服务商直营平台 相对来说数据更好&#xff0c;我们也拿到了平台首码&#xff1a;000000 填这个就行&#xff0c;属于官方渠道 平台最新上架的产品有&a…

Java即时通讯源码 IM即时通讯系统源码

Java即时通讯源码 IM即时通讯系统源码 基本功能说明及介绍&#xff1a; 客户端&#xff1a;安卓&#xff0c;苹果&#xff0c;&#xff08;可赠送web&#xff0c;pc&#xff09; 开发语言&#xff1a; Java OC C# 运行软件&#xff1a;eclipse Java xcode 数据库&#xff…

选择工业交换机时,需要关注哪些方面的性能?

在工业自动化、能源、交通等领域的网络通信中&#xff0c;工业交换机是一种非常重要的网络设备。它的性能和可靠性直接影响到整个网络的稳定性和安全性。因此&#xff0c;在选择工业交换机时&#xff0c;我们需要关注以下几个方面的性能&#xff1a; 1. 抗干扰性能&#xff1a;…

linux下安装 Chrome 和 chromedriver 以及 selenium webdriver 使用

1 安装 Chrome yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm2 下载 chromedriver # 进入下载目录 cd soft/crawler_tools# 查看chrome 版本号 google-chrome --version# 在chromedriver下载地址中找到对应版本&#xff0c;下载对…

音频类型识别方案-audioset_tagging

audioset_tagging github上开源的音频识别模型&#xff0c;可以识别音频文件的类型并打分给出标签占比&#xff0c;如图 echo off set CHECKPOINT_PATH"module/Cnn14_mAP0.431.pth" set MODEL_TYPE"Cnn14" set CUDA_VISIBLE_DEVICES0 python pytorch\in…

谈谈多用户商城系统的优缺点

多用户商城系统是一种基于互联网的电子商务平台&#xff0c;可以给多个商家提供在线销售、交易和管理的功能。这种系统的出现&#xff0c;为商家和消费者之间的交流和交易提供了更加便捷和高效的方式。那么&#xff0c;多用户商城系统的优缺点有哪些呢&#xff1f; 一、多用户商…

实在智能受邀参加第14届珠中江数字化应用大会,AI赋能智能制造,共话“湾区经验”

制造业是实体经济的主体&#xff0c;是技术创新的主战场&#xff0c;是供给侧结构性改革的重要领域。抢占新一轮产业竞争制高点&#xff0c;制造业的数字化转型已成为行业升级的必由之路。 10月21日&#xff0c;第14届“珠中江”&#xff08;珠海、中山、江门&#xff09;数字…

Amazon商品详情API接口(标题|主图|SKU|价格|库存)

亚马逊商品详情API接口是亚马逊平台提供的API接口&#xff0c;可以通过程序调用API来获取亚马逊商品的相关数据&#xff0c;包括商品价格、库存、评价等信息。这些信息可以帮助开发者和商家更好地了解商品详情&#xff0c;优化用户体验&#xff0c;支持购买决策&#xff0c;竞品…

软件兼容性测试对软件产品起到什么作用?CMA、CNAS软件测评中心分享

软件兼容性测试是指检查软件之间能否正确地进行交互和共享信息。随着用户对来自各种类型软件之间共享数据能力和充分利用空间同时执行多个程序能力的要求&#xff0c;测试软件之间能否协作变得越来越重要。软件兼容性测试工作的目标是保证软件按照用户期望的方式进行交互。 1、…

哪些车企AEB标配率「不及格」

对于汽车智能化来说&#xff0c;基础安全不分高低配。但实际情况&#xff0c;却是另一番景象。 在全球范围&#xff0c;目前不少国家及地区的监管机构正在考虑将AEB&#xff08;紧急制动系统&#xff09;作为乘用车的标配纳入法规&#xff0c;“这是道路安全向前迈出了重要的一…

21.2 Python 使用Scapy实现端口探测

Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具&#xff0c;它能够处理和嗅探各种网络数据包。能够很容易的创建&#xff0c;发送&#xff0c;捕获&#xff0c;分析和操作网络数据包&#xff0c;包括TCP&#xff0c;UDP&#xff0c;ICMP等协议&#xff0c;此外它还提…

【QT开发(15)】QT在没有桌面的系统中可以使用

在没有桌面的系统中&#xff0c;可以使用QT库。QT库可以在没有图形用户界面&#xff08;GUI&#xff09;的环境中运行&#xff0c;例如在服务器或命令行终端中。 这样就可利用Qt的&#xff1a; 对象模型&#xff0c;信号和槽容器类多线程和多进程网络编程 等