首页 > 其他分享 >困难-2435. 矩阵中和能被 K 整除的路径

困难-2435. 矩阵中和能被 K 整除的路径

时间:2022-10-11 17:55:23浏览次数:51  
标签:const list 路径 矩阵 2435 preList grid 整除

这是10月9日参加竞赛的一道题目,当时没做出来,数据量很大,对性能要求比较高 执行结果:通过 执行用时:220 ms, 在所有 JavaScript 提交中击败了100.00%的用户 内存消耗:75.2 MB, 在所有 JavaScript 提交中击败了57.58%的用户 通过测试用例:88 / 88  

给你一个下标从 0 开始的 m x n 整数矩阵 grid 和一个整数 k 。你从起点 (0, 0) 出发,每一步只能往 下 或者往 右 ,你想要到达终点 (m - 1, n - 1) 。

请你返回路径和能被 k 整除的路径数目,由于答案可能很大,返回答案对 109 + 7 取余 的结果。

 

示例 1:

 

输入:grid = [[5,2,4],[3,0,5],[0,7,2]], k = 3
输出:2
解释:有两条路径满足路径上元素的和能被 k 整除。
第一条路径为上图中用红色标注的路径,和为 5 + 2 + 4 + 5 + 2 = 18 ,能被 3 整除。
第二条路径为上图中用蓝色标注的路径,和为 5 + 3 + 0 + 5 + 2 = 15 ,能被 3 整除。
示例 2:


输入:grid = [[0,0]], k = 5
输出:1
解释:红色标注的路径和为 0 + 0 = 0 ,能被 5 整除。
示例 3:


输入:grid = [[7,3,4,9],[2,3,6,2],[2,3,7,0]], k = 1
输出:10
解释:每个数字都能被 1 整除,所以每一条路径的和都能被 k 整除。
 

提示:

m == grid.length
n == grid[i].length
1 <= m, n <= 5 * 104
1 <= m * n <= 5 * 104
0 <= grid[i][j] <= 100
1 <= k <= 50

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/paths-in-matrix-whose-sum-is-divisible-by-k
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * @param {number[][]} grid
 * @param {number} k
 * @return {number}
 */
var numberOfPaths = function(grid, k) {
    //动态规划公式 preList[x][n] 表示每一行位置x,取余为n的数量
    const mod=1000000007
    
    const height=grid.length;
    const width=grid[0].length
    
    let preList=[]
    for(let y=0;y<height;y++){
        const list=[]
        for(let x=0;x<width;x++){
            list[x]=[]
            const v=grid[y][x]
            if(x===0&&y===0){
                list[0][v%k]=1
            }else{
                if(y>0){
                    preList[x].forEach(function(num,j){
                        const n=(v+j)%k
                        if(!list[x][n]){
                            list[x][n]=0
                        }
                        list[x][n]=(list[x][n]+num)%mod
                    })
                }
                if(x>0){
                    list[x-1].forEach(function(num,j){
                        const n=(v+j)%k
                        if(!list[x][n]){
                            list[x][n]=0
                        }
                        list[x][n]=(list[x][n]+num)%mod
                    })
                }
            }
            
            
        }
        preList=list
    }
    
    return preList[preList.length-1][0]||0

};

 

标签:const,list,路径,矩阵,2435,preList,grid,整除
From: https://www.cnblogs.com/caoke/p/16780059.html

相关文章

  • 矩阵类优化——动态dp
    Idea主要指用矩阵维护带修改的dp问题的方法,一般会用到数据结构来维护矩阵。矩阵的用法具体见矩阵加速优化dp.下面主要根据例题讲解。Problem1.P4719【模板】"......
  • HDU 5373 The shortest problem(判断一个数能否被11整除)
    题目地址;​​点击打开链接​​思路:参考队友的代码写的,资料地址:​​点击打开链接​​ 怎样判断一个数能不能被11整除?判断一个数能不能被11整除与判断一个数能不能被......
  • MATLAB 对称矩阵
    已知A矩阵为: 4  20 12 8 3  15  7 40 8  22 12 36 11 30 18 46 将矩阵转变为对称矩阵 4 20 12  820 15  7 ......
  • 求该矩阵的逆、行列式、秩、迹
    已知A矩阵为: 4  20 12 8 3  15  7 40 8  22 12 36 11 30 18 46 求该矩阵的逆、行列式、秩、迹  a=[4,20,12,8;3,15,7,40......
  • 计算矩阵二范数化的向量化方法
     设矩阵,对其2-范数化,即其中那么,可以用伪代码来实现。clearclc% (1). Loop methodx = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12];[m, n] = siz......
  • 矩阵求逆
    矩阵求逆的实用方法如何求下三角矩阵的逆下三角矩阵\(A\in\mathbb{R}^{n\timesn}\)\(AB=A(b_1,b_2,\cdots,b_n)=I\)\(Ab_i=e_i,i=1,2,\cdots,n\)使用前代法求解每......
  • [转]OpenCV_Find Basis F-Matrix and computeCorrespondEpilines(获取一对图像的基础
    代码如下://BasisMatrixCalculate.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<iostream>#include<vector>#include<opencv2/core/c......
  • 伴随矩阵
    一、什么是伴随矩阵\[A=\begin{bmatrix}a_{11}&a_{12}\\\end{bmatrix}_{(5\times\color{red}5)}\]二、什么是代数余子式三、python实现伴随矩阵的方法......
  • 矩阵乘法: 从 Strassen 到 Coppersmith–Winograd
    这篇文章主要是对MIT6.890的Lec19~23的理解,试图概括在Strassen之后一直到Coppersmith–Winograd的矩阵乘法用到了一些什么技术.本文的终点是证明\(\omega\leq......
  • 线性代数——矩阵的运算(未完待续)
    矩阵的幂运算定义:设A为n阶矩阵,\(A^k=A*A*A...\)定义为A的k次方幂性质:1.\(A^k*A^l=A^{k+l}=A^l*A^k\)2.\((A^k)^l=A^{kl}\)3.\((AB)^k!=A^kB^k\),矩阵乘法并不满足交换......