伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

2021-03-20:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的子矩形数

来源:本站原创 浏览:93次 时间:2022-06-08

2021-03-20:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的子矩形数量。

福大大 答案2021-03-20:

按行遍历二维数组,构造直方图。
单调栈,大压小。有代码。

代码用golang编写,代码如下:

package mainimport "fmt"func main() {    matrix := [][]int{        {1, 1, 1, 1, 1, 1},    }    ret := numSubmat(matrix)    fmt.Println(ret)}func numSubmat(mat [][]int) int {    if len(mat) == 0 || len(mat[0]) == 0 {        return 0    }    nums := 0    height := make([]int, len(mat[0]))    for i := 0; i < len(mat); i++ {        for j := 0; j < len(mat[0]); j++ {            if mat[i][j] == 0 {                height[j] = 0            } else {                height[j]++            }        }        nums += countFromBottom(height)    }    return nums}func countFromBottom(height []int) int {    if len(height) == 0 {        return 0    }    nums := 0    stack := make([]int, len(height))    si := -1    for i := 0; i < len(height); i++ {        for si != -1 && height[stack[si]] >= height[i] {            cur := stack[si]            si--            if height[cur] > height[i] {                left := -1                if si != -1 {                    left = stack[si]                }                n := i - left - 1                heightleft := 0                if left != -1 {                    heightleft = height[left]                }                down := getMax(heightleft, height[i])                nums += (height[cur] - down) * num(n)            }        }        si++        stack[si] = i    }    for si != -1 {        cur := stack[si]        si--        left := -1        if si != -1 {            left = stack[si]        }        n := len(height) - left - 1        down := 0        if left != -1 {            down = height[left]        }        nums += (height[cur] - down) * num(n)    }    return nums}func num(n int) int {    return (n * (1 + n)) >> 1}func getMax(a int, b int) int {    if a > b {        return a    } else {        return b    }}

执行结果如下:


左神java代码
力扣1504. 统计全 1 子矩形
评论

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net