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

力扣动态规划-2【算法学习day.96】

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.组合总和IV

题目链接:377. 组合总和 Ⅳ - 力扣(LeetCode)

题面:

记忆化搜索+递归:

class Solution {
    int[] nums;
    int[] flag;
    public int combinationSum4(int[] nums, int target) {
       this.nums = nums;
       flag = new int[target+1];
       Arrays.fill(flag,-1);
       return recursion(target);
    }
    public int recursion(int i){
        if(i==0)return 1;
        if(flag[i]!=-1)return flag[i];
        int sum  = 0;
        for(int a:nums){
            if(a<=i){
                sum+=recursion(i-a);
            }
        }
          return flag[i] = sum;
    }
}

递推:

class Solution {
    public int combinationSum4(int[] nums, int target) {
      int[] flag = new int[target+1];
      flag[0] = 1;
      for(int i = 1;i<=target;i++){
        for(int a:nums){
            if(a<=i){
                flag[i]+=flag[i-a];
            }
        }
      }
      return flag[target];
    }
}

 2.统计构造好字符串的方案数

题目链接:2466. 统计构造好字符串的方案数 - 力扣(LeetCode)

题面:

代码:

class Solution {
    public int countGoodStrings(int low, int high, int zero, int one) {
        int[] flag = new int[high+1];
        flag[0] = 1;
        int mod = (int)1e9+7;
        for(int i = 1;i<=high;i++){
            if(i>=zero){
                flag[i]=(flag[i-zero]+flag[i])%mod;
            }
            if(i>=one){
                flag[i]=(flag[i-one]+flag[i])%mod;
            }
        }
        int  ans = 0;
        for(int i = low;i<=high;i++){
            ans = ans+ flag[i];
            ans%=mod;
        }
       return ans;
    }
}

后言

上面是动态规划相关的习题,共勉

 


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

相关文章:

  • 20250118-读取并显示彩色图像以及提取彩色图像的 R、G、B 分量
  • Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin
  • HackMyVM-Klim靶机的测试报告
  • 金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口
  • 44.ComboBox的数据绑定 C#例子 WPF例子
  • 复用类(4):final关键字、初始化与类的加载
  • 学习华为熵减模型:激发组织活力(系列之三)
  • PostgreSQL_安装部署
  • Golang——内存(内存管理、内存逃逸、垃圾回收 (GC) 机制)
  • 学生管理系统C++版(简单版)
  • 使用Emgu.CV将tif保存视频,并用AxWindowsMediaPlayer打开
  • ant design vue的级联选择器cascader的悬浮层样式怎么修改
  • Word中如何格式化与网页和 HTML 内容相关的元素
  • 基于python对抖音热门视频的数据分析与实现
  • Linux网络序列化与反序列化
  • LINUX编译LibreOffice
  • React进阶之react.js、jsx模板语法及babel编译
  • 数据结构---并查集
  • Python学习(十三)什么是模块、模块的引入、自定义模块、常见的内置模块(math、random、os、sys、uuid、时间模块、加密模块)
  • 搭建一个基于Spring Boot的数码分享网站
  • [Qt]窗口-QDialog、QMessageBox、QColorDialog、QFileDialog、QFontFialog、QInputDialog对话框
  • 登录校验Cookie、Session、JWT
  • 【unity进阶篇】弧度、角度和三角函数(Mathf),并实现类似蛇的运动
  • Django SimpleUI 自定义功能实战
  • 【漏洞预警】FortiOS 和 FortiProxy 身份认证绕过漏洞(CVE-2024-55591)
  • 网络系统管理Linux环境——AppSrv之SSH