【发布时间】:2021-09-16 01:19:35
【问题描述】:
我最近有一次面试,被要求用 Python 解决以下问题:
写一个函数:
def solution(A):
这样,给定一个由 N 个整数组成的数组A,它返回所有一位整数中的最大值。
例如,给定数组A如下:
[-6, -91, 1011, -100, 84, -22, 0, 1, 473]
函数应该返回 1。
假设:
- N 是 [1...1,000] 范围内的整数
- 数组
A的每个元素都是[-10,000..10,000] 范围内的整数。 - 数组
A中至少有一个元素满足任务语句中的条件。
我想出了以下我认为很优雅的解决方案,但我得到的分数只有 55%:
def solution(A):
return max([i for i in A if len(str(i))==1])
为什么这个解决方案不正确?
【问题讨论】:
-
-6是一位数。但是len(str(-6))是2? -
另外,任何告诉你调用 Python 局部变量 capital A 的面试问题肯定是由实际上不使用 Python 的人编写的。
-
同样将整数转换为字符串也不是那么优雅。你可以使用
if -9 <= i <= 9。 -
@ZhubeiFederer 不是最初的评论者,但在我看来不仅这种糟糕的风格(本质上是非描述性的)而且以大写字母开头的变量在风格上是为类名保留的。
-
@ZhubeiFederer - 根据 pep8,局部变量应该是
lower_case_with_underscores并且它们应该是描述性的。A也不是。