2024-04-06:用go语言,给你两个非负整数数组 rowSum 和 colSum, 其中 rowSum[i] 是二维矩阵中第 i 行元素的和, colSum[j] 是第 j 列元素的和,换言之你
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:
来自左程云。
大体步骤如下:
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 列元素的和,换言之你的更多相关文章
- IT公司100题-35- 求一个矩阵中最大的二维矩阵(元素和最大)
问题描述: 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 中最大的是: 4 5 9 10 分析: 2*2子数组的最大和.遍历求和,时 ...
- C语言数组篇(五)多级指针和二维数组指针的区别
多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[] --> 10个空间的数组 * p[] --> 这10个空间的数组里面存放 ...
- Leecode刷题之旅-C语言/python-88合并两个有序数组
/* * @lc app=leetcode.cn id=88 lang=c * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-s ...
- numpy多维矩阵,取出第一行或者第一列,方法和df一样
# 定义一个多维矩阵 arr = np.array([[1,2,3], [4,5,6], [7,8,9]]) # 取出第一行 arr[0,:] # 取出第一列 arr[:,0]
- 将含两列的csv文件生成二维矩阵
gen_diea=pd.read_csv('../data/ddg_data/diea-gene.csv', header=None, names=['diease','gene']) #生成关联矩阵 ...
- JavaSE学习总结第06天_Java语言基础2 & 面向对象1
06.01 二维数组概述和格式1的讲解 二维数组概述:二维数组其实就是一个元素为一维数组的数组 格式1:数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...
- C语言之二维数组
二维数组 还是一个数组,只不过数组中得每一个元素又是一个数组 1). 声明语法 类型 数组名[行][列]; 例: int nums[2][3];//2行3列的二维数组,保存的数据类型是int类型 c ...
- C语言数组:C语言数组定义、二维数组、动态数组、字符串数组
1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...
- C语言二维数组
上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本节只介绍二维数 ...
- 数组问题:a[i][j] 和 a[j][i] 有什么区别?
本文以一个简单的程序开头--数组赋值: int LEN = 10000; int[][] arr = new int[LEN][LEN]; for (int i = 0; i < LEN; i+ ...
随机推荐
- 协程与yield表达式
在函数内,yield语句可以作为表达式使用,出现在赋值运算符的右边,例如: def receiver(): print("Ready to receive") while True ...
- java+mysql数据库实现的学生管理系统
说明: java+mysql数据库实现的学生管理系统 功能 实现增加学生.删除学生.修改学生.学生列表.查询学生功能 截图: 开发工具/技术 java eclipse 价格:50元,有需要联系 微信 ...
- Linux Cheat Sheet
- 【Azure 应用服务】如何禁止chinacloudsites.cn 访问?
问题描述 Azure App Service创建后,默认会有一个 Azure App Service创建后,默认会有一个 https://xxxxxxxxxxxxx.chinacloudsites. ...
- CSRF(Steam的链接不用随便点)
漏洞详解 CSRF 漏洞原理: 攻击者会冒充或利用用户本人对web服务器发送请求,然而web服务器无法识别该请求是否为用户本人所发送,因此造成各种危害. 漏洞利用过程: 1)首先需要用户登录了上网站, ...
- 2.UML类图基本介绍
1. UML 基本介绍 UML--Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 U ...
- centos 定时任务
想法 看见一个别的项目,每天扒bing的背景,然后 生成个列表,然后数据就一天天的增加,创意非常好 有时间研究下 关键字 centos 定时任务 基于centos7系统定时任务创建 https://b ...
- [【stars-one】Android图标生成器 PC工具
原文: [stars-one]Android图标生成器 - Stars-One的杂货小窝 一款Android开发者的PC工具软件,可以快速生成android开发需要使用的xml矢量图标文件 起因 个人 ...
- Android使用poi遇到的问题
原文:Android使用poi遇到的问题 关于Poi使用可以看这一篇[开源库推荐]#4 Poi-办公文档处理库 本篇主要讲些在Android上使用出现的问题 问题 原本是需要一个导出xlsx表格文件的 ...
- (二)Linux环境的学习环境的搭建
Xshell的安装和连接 由于我们打算通过Xshell进行命令的输入,就不再进行VMWARE-TOOLS的安装. 我们直接进行安装Xshell 并开始连接我们创建的创建的虚拟机 我们可以通过Xshel ...