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

为什么我用Python的max函数获取数组最大一位数的方案不正确?

问题描述

给定由N个整数组成的数组A,返回所有一位整数中的最大值。

需编写函数:

def solution(A):

示例

输入数组:[-6, -91, 1011, -100, 84, -22, 0, 1, 473]
正确输出:1

约束条件

  • N是取值范围在[1, 1000]内的整数
  • 数组A的每个元素都是取值范围在[-10000, 10000]内的整数
  • 数组A中至少存在一个符合任务要求的元素

代码错误原因分析

你提交的代码如下:

def solution(A):
    return max([i for i in A if len(str(i))==1])

这段代码的核心错误出在一位整数的判断逻辑:
你通过len(str(i)) == 1判断数值是否为一位数,但负的一位数转为字符串后会包含负号,比如-6转为字符串是"-6",长度为2,会被你的筛选条件直接排除。
这种逻辑会触发两类问题:

  1. 如果数组中符合要求的一位数全是负数,你的筛选结果会是空列表,调用max()时会直接抛出ValueError,完全无法返回结果
  2. 如果数组同时存在正的一位数和负的一位数,虽然不会报错,但你漏判了负的一位数的场景,遇到特殊测试用例时返回结果不符合要求

修复方案

正确的一位整数判断逻辑应该是数值的绝对值小于10,即abs(i) < 10,不需要转字符串处理,性能也更高。
修复后的代码如下:

def solution(A):
    return max(i for i in A if abs(i) < 10)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:54:02