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

力扣动态规划-17【算法学习day.111】

前言

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


习题

1.统计异或值为给定值的路径数目

题面链接:3393. 统计异或值为给定值的路径数目 - 力扣(LeetCode)

题面:

附上灵神代码:

class Solution {
    private static final int MOD = 1_000_000_007;

    public int countPathsWithXorValue(int[][] grid, int k) {
        int mx = 0;
        for (int[] row : grid) {
            for (int val : row) {
                mx = Math.max(mx, val);
            }
        }
        int u = 1 << (32 - Integer.numberOfLeadingZeros(mx));
        if (k >= u) {
            return 0;
        }

        int m = grid.length;
        int n = grid[0].length;
        int[][][] memo = new int[m][n][u];
        for (int[][] mat : memo) {
            for (int[] row : mat) {
                Arrays.fill(row, -1);
            }
        }
        return dfs(grid, m - 1, n - 1, k, memo);
    }

    private int dfs(int[][] grid, int i, int j, int x, int[][][] memo) {
        if (i < 0 || j < 0) {
            return 0;
        }
        int val = grid[i][j];
        if (i == 0 && j == 0) {
            return x == val ? 1 : 0;
        }
        if (memo[i][j][x] != -1) {
            return memo[i][j][x];
        }
        int left = dfs(grid, i, j - 1, x ^ val, memo);
        int up = dfs(grid, i - 1, j, x ^ val, memo);
        return memo[i][j][x] = (left + up) % MOD;
    }
}

后言

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

 

 


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

相关文章:

  • JVM-运行时数据区
  • Vue 3 30天精进之旅:Day 11 - 状态管理
  • 【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例
  • Spring Boot项目中解决跨域问题(四种方式)
  • 自然语言处理-词嵌入 (Word Embeddings)
  • 计算机组成原理——存储系统(一)
  • 深入解析“legit”的地道用法——从俚语到正式表达:Sam Altman用来形容DeepSeek: legit invigorating(真的令人振奋)
  • 计算机网络之物理层通信基础(编码与调制)
  • java练习(2)
  • 初识ArkTS语言
  • Java小白入门教程:泛型,泛型类型参数<T> <K> <V> <E>(必须Get的知识)
  • WSL2中安装的ubuntu开启与关闭探讨
  • 使用Pygame制作“吃豆人”游戏
  • Spring Boot 实例解析:HelloWorld 探究
  • 【LeetCode 刷题】二叉树-二叉搜索树的属性
  • 我用Ai学Android Jetpack Compose之Box
  • 3 Flink 运行架构
  • 关于系统重构实践的一些思考与总结
  • 攻防世界_PHP2
  • Web-3.0(Solidity)ERC-20
  • 【Uniapp-Vue3】获取用户状态栏高度和胶囊按钮高度
  • 手撕Vision Transformer -- Day1 -- 基础原理
  • 【react-redux】react-redux中的 useDispatch和useSelector的使用与原理解析
  • 2 Flink 部署及启动
  • 基于Python的简单企业维修管理系统的设计与实现
  • TypeScript 运算符