You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Striver SDE Sheet矩阵置零问题:markrow未定义的NameError求助

矩阵置零问题的NameError修复方案

问题描述

给定一个m×n的整数矩阵matrix,若某元素为0,则将其所在的整行和整列置为0。

错误信息

NameError: name 'markrow' is not defined
markrow(i)

尝试的错误代码

class Solution:
def markrow(i):
    for j in range(m):
        if matrix[i][j]!=0:
            matrix[i][j]=-1
def markcol(j):
    for i in range(n):
        if matrix[i][j]!=0:
            matrix[i][j]=-1
def setZeroes(self, matrix: List[List[int]]) -> None:
    n=len(matrix)
    m=len(matrix[0])
    for i in range(n):
        for j in range(m):
            if matrix[i][j]==0:
                markrow(i)
                markcol(j)
    for i in range(n):
        for j in range(m):
            if matrix[i][j]==-1:
                matrix[i][j]==0    
    print(m) 

问题分析与修正代码

错误根源:

  • 类内部定义的markrow、markcol未添加self参数,也未通过self.调用,导致无法识别
  • 这两个函数无法直接访问setZeroes方法内的m、n、matrix变量,需通过参数传递
  • 最后一步将-1置0时误用了比较运算符==,应为赋值运算符=

修正后的代码:

from typing import List

class Solution:
    def markrow(self, matrix, row, col_count):
        for j in range(col_count):
            if matrix[row][j] != 0:
                matrix[row][j] = -1
    
    def markcol(self, matrix, col, row_count):
        for i in range(row_count):
            if matrix[i][col] != 0:
                matrix[i][col] = -1
    
    def setZeroes(self, matrix: List[List[int]]) -> None:
        n = len(matrix)
        m = len(matrix[0])
        # 遍历标记需要置零的行和列
        for i in range(n):
            for j in range(m):
                if matrix[i][j] == 0:
                    self.markrow(matrix, i, m)
                    self.markcol(matrix, j, n)
        # 将标记的-1替换为0
        for i in range(n):
            for j in range(m):
                if matrix[i][j] == -1:
                    matrix[i][j] = 0

关键修正点

  1. 给类内函数添加self参数,调用时使用self.前缀
  2. 将matrix、行列数作为参数传入markrow和markcol,解决变量作用域问题
  3. 修正赋值运算符错误,确保-1能正确替换为0
  4. 添加类型标注的导入语句,保证代码兼容性

内容的提问来源于stack exchange,提问作者devesh jeswani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:13:20