首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到移除矩阵中所有1的最小箭头。

找到移除矩阵中所有1的最小箭头。
EN

Stack Overflow用户
提问于 2022-06-14 18:48:08
回答 1查看 116关注 0票数 -3

给定一个大小为N x M的二进制矩阵,我们需要找到所需的最小箭头数来删除矩阵中的所有1。

箭头可以在y= 6处垂直命中,它将在matrix[x][6]中移除所有1's,在0 <= x < N或水平上也可以在x= 5处删除,它将在matrix[5][y]删除所有1,其中0 <= y < M

我们需要找到箭头的最小数目,需要删除矩阵中的所有1。

样本测试个案:-

输入:

代码语言:javascript
复制
0 0 1 1 0 0
0 1 0 0 1 0
0 0 0 1 0 0
0 0 1 1 0 0

输出:

代码语言:javascript
复制
3

解释:

代码语言:javascript
复制
arrow-1 : x = 1
arrow-2 : y = 2
arrow-3 : y = 3

Approach(Greedy)

我们可以在每个行、上计数1的数目,然后按递减顺序对它们排序。并继续从箭头总数中减少箭头,直到箭头数的计数到达<= 0为止。我们能停下来数一下我们做过那次手术的次数吗?

但是这种方法的一个问题是,行中的箭头和cols可以重叠,因此,一旦我们从行/col中删除所有箭头,并在每次更新发生时保持数组的排序,我们就需要某种方式来跟踪行/列中留下的箭头数。

如何正确、最优地解决 ?

问题?

EN

回答 1

Stack Overflow用户

发布于 2022-06-14 19:20:40

我认为最低限度可以通过以下方式找到:

计算有行的行数,但这些行只出现在该行中,而不是其他行,也就是说,这是该列中的唯一行,并跟踪这些行发生的唯一列。

在您的示例中,它是x= 1,在本例中有1的列是y= 1,y= 4。

结果是(列总数-在上述行中找到的唯一列数)在您的示例中是:6-2=4。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72621990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档