2024-04-06:用go语言,给你两个非负整数数组 rowSum 和 colSum,

其中 rowSum[i] 是二维矩阵中第 i 行元素的和,

colSum[j] 是第 j 列元素的和,换言之你不知道矩阵里的每个元素,

但是你知道每一行和每一列的和。

请找到大小为 rowSum.length x colSum.length 的任意 非负整数 矩阵。

且该矩阵满足 rowSum 和 colSum 的要求。

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

输入:rowSum = [3,8], colSum = [4,7]。

输出:[[3,0],[1,7]]。

答案2024-04-06:

来自左程云

灵捷3.5

大体步骤如下:

1.初始化一个大小为rowSum.length x colSum.length的二维矩阵ans,用于存储最终的结果。

2.遍历rowSum数组,对于每个元素rowSum[i],继续遍历colSum数组,对于每个元素colSum[j]:

  • 将ans[i][j]设为rowSum[i]和colSum[j]中的较小值,即ans[i][j] = min(rowSum[i], colSum[j])。

  • 更新rowSum[i]和colSum[j],分别减去已经分配的值ans[i][j],即rowSum[i] -= ans[i][j],colSum[j] -= ans[i][j]。

3.返回ans作为结果矩阵。

总的时间复杂度:遍历rowSum和colSum数组需要$O(n2)$的时间复杂度,其中n是rowSum和colSum的长度。因此,总的时间复杂度为$O(n2)$。

总的额外空间复杂度:额外使用了一个二维矩阵ans来存储结果,其大小为rowSum.length x colSum.length,因此总的额外空间复杂度为$O(n^2)$。

Go完整代码如下:

package main

import (
"fmt"
) func restoreMatrix(rowSum []int, colSum []int) [][]int {
n := len(rowSum)
m := len(colSum)
ans := make([][]int, n)
for i := 0; i < n; i++ {
ans[i] = make([]int, m)
for j := 0; j < m; j++ {
ans[i][j] = min(rowSum[i], colSum[j])
rowSum[i] -= ans[i][j]
colSum[j] -= ans[i][j]
}
}
return ans
} func min(a, b int) int {
if a < b {
return a
}
return b
} func main() {
rowSum := []int{3, 8}
colSum := []int{4, 7}
matrix := restoreMatrix(rowSum, colSum)
for _, row := range matrix {
fmt.Println(row)
}
}

Python完整代码如下:

# -*-coding:utf-8-*-

def restoreMatrix(rowSum, colSum):
n = len(rowSum)
m = len(colSum)
ans = [[0] * m for _ in range(n)]
for i in range(n):
for j in range(m):
ans[i][j] = min(rowSum[i], colSum[j])
rowSum[i] -= ans[i][j]
colSum[j] -= ans[i][j]
return ans def min(a, b):
if a < b:
return a
return b rowSum = [3, 8]
colSum = [4, 7]
matrix = restoreMatrix(rowSum, colSum)
for row in matrix:
print(row)

2024-04-06:用go语言,给你两个非负整数数组 rowSum 和 colSum, 其中 rowSum[i] 是二维矩阵中第 i 行元素的和, colSum[j] 是第 j 列元素的和,换言之你的更多相关文章

  1. IT公司100题-35- 求一个矩阵中最大的二维矩阵(元素和最大)

    问题描述: 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 中最大的是: 4 5 9 10   分析: 2*2子数组的最大和.遍历求和,时 ...

  2. C语言数组篇(五)多级指针和二维数组指针的区别

    多级指针   以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[] --> 10个空间的数组 * p[] --> 这10个空间的数组里面存放 ...

  3. Leecode刷题之旅-C语言/python-88合并两个有序数组

    /* * @lc app=leetcode.cn id=88 lang=c * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-s ...

  4. numpy多维矩阵,取出第一行或者第一列,方法和df一样

    # 定义一个多维矩阵 arr = np.array([[1,2,3], [4,5,6], [7,8,9]]) # 取出第一行 arr[0,:] # 取出第一列 arr[:,0]

  5. 将含两列的csv文件生成二维矩阵

    gen_diea=pd.read_csv('../data/ddg_data/diea-gene.csv', header=None, names=['diease','gene']) #生成关联矩阵 ...

  6. JavaSE学习总结第06天_Java语言基础2 & 面向对象1

      06.01 二维数组概述和格式1的讲解 二维数组概述:二维数组其实就是一个元素为一维数组的数组 格式1:数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...

  7. C语言之二维数组

    二维数组 还是一个数组,只不过数组中得每一个元素又是一个数组 1). 声明语法 类型 数组名[行][列]; 例:  int nums[2][3];//2行3列的二维数组,保存的数据类型是int类型 c ...

  8. C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

    1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...

  9. C语言二维数组

    上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本节只介绍二维数 ...

  10. 数组问题:a[i][j] 和 a[j][i] 有什么区别?

    本文以一个简单的程序开头--数组赋值: int LEN = 10000; int[][] arr = new int[LEN][LEN]; for (int i = 0; i < LEN; i+ ...

随机推荐

  1. 第120篇: DOM编程(常用操作、动态脚本、样式及动态表格)

    好家伙,我回来了, 本篇为<JS高级程序设计>第十四章"DOM编程"学习笔记   1.DOM编程 我们知道DOM是HTML文档的编程接口, 我们可以通过HTML代码实现 ...

  2. 【App Service for Windows】为 App Service 配置自定义 Tomcat 环境

    问题描述 当在App Service for Windows环境中所列出的Tomcat Version 没有所需要的情况下,如何实现自定义Tomcat 环境呢? 问题解答 第一步: 从官网下载要使用的 ...

  3. 【Azure 应用服务】如何查看App Service中的私网IP地址?

    问题描述 在使用App Service服务时,可以通过Azure 门户中的属性功能查看出站IP列表. 如果把App Service与虚拟网络(VNET)集成后,它就可以直接访问虚拟网络内部资源,那么如 ...

  4. 【Azure 应用服务】[App Service For Linux(Function) ] Python ModuleNotFoundError: No module named 'MySQLdb'

    问题描述 在使用Azure Function创建新的Python Function时,使用MySQLdb连接数据库时候出现 ModuleNotFoundError: No module named ' ...

  5. C程序分别实现下列字符阵列的输出

    C程序分别实现下列字符阵列的输出:(https://zhuanlan.zhihu.com/p/443989560    可以参考这个博主写的) 1,左下三角形(代码) 1 #include <s ...

  6. ExoPlayer播放流程解析

    ExoPlayer的播放解析流程如下(以音频为例): 注意: 1.LoadControl.shouldContinueLoading控制是否继续加载. 2.调用setPlayWhenReady(tru ...

  7. Java 异常处理(1) : try-catch- finally中finally的使用

    1 package com.bytezero.throwable; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 impor ...

  8. 来自 AI Secure 实验室的 LLM 安全排行榜简介

    近来,LLM 已深入人心,大有燎原之势.但在我们将其应用于千行百业之前,理解其在不同场景下的安全性和潜在风险显得尤为重要.为此,美国白宫发布了关于安全.可靠.可信的人工智能的行政命令; 欧盟人工智能法 ...

  9. 基于python的定时PC定时录音机实现

    一 概念基础 这次用python实现一个定时录音机的功能,可以让你的i电脑秒变定时录音机. 这里用到了wave库,time库等.熟悉该源码,即可了解这些库的用法.   二 源码解析 1.录音函数,该函 ...

  10. 二进制文件分析工具-hexdump使用指南

    一 概念: hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII.八进制.十进制.十六进制 格式进行 查看. 二 用法简介: 该工具的用法十分简单,具体如下所示: ...