1582. 二进制矩阵中的特殊位置

1582. 二进制矩阵中的特殊位置

  • 题号:力扣1582
  • 知识点:矩阵
  • 目标完成度:17/150
  • 总结
    题干:
    在这里插入图片描述

思路:

  • 1.看到题目首先想到的就是暴力破解。使用两层循环遍历每一个元素,如果元素为1,就再判断每该元素所在行是否还有其他1。如果该行还有一则退出继续,遍历继续;如果该行只有一个1,则检查该元素所在列是否只有一个1,如果是则ret+=1,如果该列还有其他1,则退出,继续遍历。
# python3
class Solution:
    def numSpecial(self, mat: List[List[int]]) -> int:
        ret = 0
        for i in range(len(mat)):
            for j in range(len(mat[0])):
                only_one = 1
                if mat[i][j]:
                    for k in range(len(mat[0])):
                        if (mat[i][k]==1) and j!=k:
                            only_one = 0
                            break
                    if only_one:
                        for m in range(len(mat)):
                            if (mat[m][j]==1) and m!=i:
                                only_one = 0
                                break
                    if only_one:
                        ret += 1
        return ret

2.第二种方法较为简洁了一些,先判断行和是否为1,如果行和为1,则找出这行中为1的元素的位置检查该元素所在列的列和是否为1,如果该元素列和也为1,则该元素是特殊位置元素。

class Solution:
	def numSpecial(self, mat: List[List[int]] ) -> int:
	ret = 0
	        for i in range(len(mat)):
	            if sum(mat[i]) == 1: # 行和为1
	                j = mat[i].index(1)
	                sum_h = 0
	                for h in range(len(mat)):
	                    sum_h += mat[h][j]
	                if sum_h == 1:
	                    ret += 1
	        return ret
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

Zannnne

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值