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

HackerRank Grid Challenge代码无法通过边缘用例求助

HackerRank网格排序问题排查与修复

问题描述

给定由ASCII[a-z]字符组成的正方形网格,需完成两个步骤:

  • 将每行元素按字母升序重排
  • 判断各列是否从上到下按字母升序排列,满足则返回YES,否则返回NO

原代码

def gridChallenge(grid):
    last_string = ""
    
    for string in grid:
        string = ''.join(sorted(string))
        print(string)
        if string < last_string:
            return "NO"
        last_string = string

    return "YES"

错误原因

原代码通过比较排序后行的字典序来判断列是否有序,这个逻辑不成立。字典序仅要求从左到右第一个不同字符满足递增,而列有序需要每一列的所有字符都从上到下递增,二者并不等价。

未通过的边缘用例

比如这个2x3网格:

grid = ["zab", "cac"]

排序后每行变为:

  • 第一行:"abz"
  • 第二行:"acc"

原代码会因"abz" < "acc"判定符合条件,最终返回YES,但实际第三列字符z(第一行)大于c(第二行),不满足列升序要求,正确结果应为NO。

修复后的代码

def gridChallenge(grid):
    # 对所有行进行排序
    sorted_rows = [''.join(sorted(row)) for row in grid]
    # 逐列检查是否升序
    col_count = len(sorted_rows[0])
    row_count = len(sorted_rows)
    
    for col in range(col_count):
        for row in range(1, row_count):
            if sorted_rows[row][col] < sorted_rows[row-1][col]:
                return "NO"
    return "YES"

修复说明

  1. 先完成所有行的排序,得到排序后的网格
  2. 遍历每一列,从第二行开始逐一比较当前行与上一行的同列字符
  3. 若某一列出现字符递减,立即返回NO;所有列均满足升序则返回YES

内容的提问来源于stack exchange,提问作者Julian Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:39:25