【每日一题Day146】给定行和列的和求可行矩阵 | 贪心

简介: 【每日一题Day146】给定行和列的和求可行矩阵 | 贪心

给定行和列的和求可行矩阵【LC1605】

给你两个非负整数数组 rowSumcolSum ,其中 rowSum[i] 是二维矩阵中第 i 行元素的和, colSum[j] 是第 j 列元素的和。

换言之你不知道矩阵里的每个元素,但是你知道每一行和每一列的和。

请找到大小为 rowSum.length x colSum.length 的任意 非负整数 矩阵,且该矩阵满足 rowSumcolSum 的要求。

请你返回任意一个满足题目要求的二维矩阵,题目保证存在 至少一个 可行矩阵。

早起了一天 还不错

  • 思路:
    从左上角开始逐行或者逐列构造,由于要求构造的每个值大于等于0,因此每次能够构造的值是rowSumcolSum的最小值【贪心】,构造完毕后将rowSumcolSum减小相应的值,然后再继续构造
  • 实现
class Solution {
    public int[][] restoreMatrix(int[] rowSum, int[] colSum) {
        int m = rowSum.length, n = colSum.length;
        int[][] res = new int[m][n];       
        for (int i = 0; i < m; i++){
            for (int j = 0; j < n; j++){
                int mn = Math.min(rowSum[i], colSum[j]);
                res[i][j] = mn;
                rowSum[i] -= mn;
                colSum[j] -= mn;               
            }
        }
        return res;
    }
}

复杂度

  • 时间复杂度:O(nm)
  • 空间复杂度:O(1)
目录
相关文章
|
7月前
没有给出二分图两个左右点集时的二分图最大匹配
没有给出二分图两个左右点集时的二分图最大匹配
35 0
|
6月前
|
存储 算法
算法训练,牛客.判断是不是平衡二叉树 牛客.最大子矩阵两个数组的交集牛客.数组中两个字符串的最小距离
算法训练,牛客.判断是不是平衡二叉树 牛客.最大子矩阵两个数组的交集牛客.数组中两个字符串的最小距离
算法训练,牛客.判断是不是平衡二叉树 牛客.最大子矩阵两个数组的交集牛客.数组中两个字符串的最小距离
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
|
7月前
【错题集-编程题】删除相邻数字的最大分数(动态规划 - 线性 dp)
【错题集-编程题】删除相邻数字的最大分数(动态规划 - 线性 dp)
|
7月前
|
算法 测试技术 C++
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
|
存储 算法
数据结构上机实践第四周项目7 - 多项式求和
数据结构上机实践第四周项目7 - 多项式求和
161 0
数据结构上机实践第四周项目7 - 多项式求和
|
存储 算法
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
172 0
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
|
算法
【算法竞赛进阶指南】車的放置(行列模型二分图最大匹配+匈牙利算法)
【算法竞赛进阶指南】車的放置(行列模型二分图最大匹配+匈牙利算法)
99 0
再学一道算法题:矩阵A乘以B
再学一道算法题:矩阵A乘以B
再学一道算法题:矩阵A乘以B
再学一道算法题: 两个有序序列的中位数
再学一道算法题: 两个有序序列的中位数
再学一道算法题: 两个有序序列的中位数