day7: 二维数组

统计有序矩阵中的负数

func countNegatives(grid [][]int) int {
    ans := 0
    for i:=0;i<len(grid);i++ {
        for j:=0;j<len(grid[0]);j++ {
            if grid[i][j] < 0 {
                ans++
            }
        }
    }
    return ans
}

矩阵对角线元素的和

func diagonalSum(mat [][]int) int {
    i, j := 0, 0
    ans, tmp := 0, 0
    for i < len(mat) && j < len(mat) {
        if j == len(mat)/2 && i == len(mat)/2 {
            tmp = mat[i][j]
        }
        ans += mat[i][j]
        i++
        j++
    }
    i, j = len(mat)-1, 0
    for i >= 0 && j < len(mat) {
        if j == len(mat)/2 && i == len(mat)/2 {
            tmp = mat[i][j]
        }
        ans += mat[i][j]
        i--
        j++
    }
    if len(mat)%2 == 0 {
        return ans
    }
    return ans-tmp
}

最富有客户的资产总量

func maximumWealth(accounts [][]int) int {
    dp := make([][]int, len(accounts))
    for i:=0;i<len(accounts);i++ {
        dp[i] = make([]int, len(accounts[i]))
        dp[i][0] = accounts[i][0]
    }

    ans := -1
    for i:=0;i<len(accounts);i++ {
        for j:=1;j<len(accounts[i]);j++ {
            dp[i][j] = dp[i][j-1] + accounts[i][j]
            // fmt.Printf("i=%d, j=%d, ,dp[%d][%d]=%d ,dp[%d][%d]=%d\n", i, j, i, j-1, i, j, dp[i][j-1], dp[i][j])
        }
        ans = max(ans, dp[i][len(accounts[i])-1])
    }
    return ans
}

func max(x, y int) int {
    if x < y {
        return y
    }
    return x
}

托普利茨矩阵

func isToeplitzMatrix(matrix [][]int) bool {
    for i:=1;i<len(matrix);i++ {
        for j:=1; j<len(matrix[0]);j++ {
            if matrix[i][j] != matrix[i-1][j-1]{
                return false
            }
        }
    }
    return true
}

矩阵中的幸运数

func luckyNumbers (matrix [][]int) []int {
    //查找列中最大数
    colMax := make([]int, len(matrix[0]))
    res := make([]int, 0)
    rowMin := make([]int, len(matrix))
    var ans int
    for i:=0;i<len(matrix[0]);i++ {
        ans = -1
        for j:=0;j<len(matrix);j++ {
            ans = max(ans, matrix[j][i])
        }
        colMax[i] = ans
    }
   // fmt.Println(colMax)
    for i:=0;i<len(matrix);i++ {
        ans = 10e9
        for j:=0;j<len(matrix[0]);j++ {
            ans = min(ans, matrix[i][j])
        }
        rowMin[i] = ans
    }
    //fmt.Println(rowMin)
    for i:=0;i<len(matrix);i++ {
        for j:=0;j<len(matrix[0]);j++ {
            if matrix[i][j] == rowMin[i] && matrix[i][j] == colMax[j] {
                res = append(res, matrix[i][j])
            }
        }
    }
    return res
}

func max(x, y int) int {
    if x < y {
        return y
    }
    return x
}

func min(x, y int) int {
    if x < y {
        return x
    }
    return y
}

二进制矩阵中的特殊位置

func numSpecial(mat [][]int) int {
    rIndex := make([]int, len(mat))
    cIndex := make([]int, len(mat[0]))
    ans := 0
    for i:=0;i<len(mat);i++ {
        for j:=0;j<len(mat[0]);j++ {
            if mat[i][j] == 1 {
                rIndex[i]++
                cIndex[j]++
            }
        }
    }
    
    for i:=0;i<len(mat);i++ {
        for j:=0;j<len(mat[0]);j++ {
            if mat[i][j] == 1 && rIndex[i] == 1 && cIndex[j] == 1 {
                ans++    
            }
        }
    }
    return ans
}

岛屿的周长


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值