当前位置: 首页 > article >正文

LeetCode343.整数拆分

今天在哔哩哔哩上刷到了一个非常有意思的leetcode整数拆分的题,博主利用动态规划。我暂时没有想到动态规划来求解,因此先尝试一下记忆性递归,没想到击败100%用户,暂时不清楚leetcode屏蔽逻辑。该题并不是很难,但有一个递归技巧点,因此进行记录。

class Solution {
    public int integerBreak(int n) {
        return integerBreakBy(n, new int[n], true);
    }
    public int integerBreakBy(int i, int[] data, boolean flag){
        if(i <= 1){
            return 1;
        }
        int max = -1;
        int a = flag ? i - 1 : i;
        for(int j = 1; j <= a; j++){
            int i_j = 0;
            if(data[i - j] == 0)
                data[i - j] = integerBreakBy(i - j, data, false);
            int cur_data = j * data[i - j];
            max = max < cur_data ? cur_data : max;  
        }
        return max;
    }
}

由于该题解要求拆出的数字个数要大于1,但是在子递归中,不用进行拆分就也是可以的,因此,引入了一个flag参数,当第一次进行拆分的时候,只要拆分出两个,子问题没有这条限制,所以引入了一个flag。


http://www.kler.cn/a/394596.html

相关文章:

  • FPGA学习(10)-数码管
  • react + ts定义接口类型写法
  • 华为路由策略配置
  • [JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决
  • K8S单节点部署及集群部署
  • ARM架构中断与异常向量表机制解析
  • 客户端发送http请求进行流量控制
  • 如何绕过Captcha并使用OCR技术抓取数据
  • 如何轻松导出所有 WordPress URL 为纯文本格式
  • 红黑树
  • 【日常记录-Git】如何为post-checkout脚本传递参数
  • 【SQL】sql常用命令
  • uniapp在app模式下组件传值
  • 【go从零单排】Ticker
  • Python自动化操作JSON文件详解
  • 在Ubuntu 24.04 LTS上安装飞桨PaddleX
  • uniapp隐藏自带的tabBar
  • 【刷题19】队列+bfs专题
  • 生成自签名证书并配置 HTTPS 使用自签名证书
  • uni-app快速入门(四)--maninfest.json及pages.json配置
  • CSS新特性
  • Ai编程从零开始全栈开发一个后台管理系统之用户登录、权限控制、用户管理-前端部分(十二)
  • nacos配置中心入门
  • 【达梦数据库】参数优化脚本主要改什么
  • spark.default.parallelism 在什么时候起作用,与spark.sql.shuffle.partitions有什么异同点?
  • LaTeX中浮动体(图片、表格)的位置及上下间距设置