【问题标题】:Problem: Squares of a Sorted Array | Can anyone lookout this code [closed]问题:有序数组的平方 |任何人都可以查看此代码[关闭]
【发布时间】:2025-12-28 16:15:15
【问题描述】:

谁能改正这段代码? 代码无法正常工作。 输出应该是一个方形排序数组。 示例:输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100] 我正在使用 Leetcode 平台。

class Solution(object):
    def sortedSquares(self, nums: List[int]):
        out = []
        for num in nums:
            out.append(num**2)
        self.sorte(out)      

    def sorte(self, out):
        if len(out)<2:
            return out
        else:
            return self.sorte([each for each in out[1:] if each < out[0]]) + [out[0]] + self.sorte([each for each in out[1:] if each >= out[0]])

【问题讨论】:

  • 你能明确定义你的问题吗?
  • 您能否说明您期望的输出是什么以及它实际输出的是什么?
  • 小建议 - 将超级单行线分成几行。甚至可以添加评论。你会帮助你自己和其他与你一起工作的人养成编写非常清晰易读的代码的习惯
  • 是的,我做了并重新编辑了问题。谢谢。

标签: python python-3.x function class optimization


【解决方案1】:

接受的解决方案:

class Solution:
    def sortedSquares(self, A: List[int]) -> List[int]:
        out = [x*x for x in A]
        return sorted(out)

如果你仍然想像你的那样做,看看这是否有帮助:

class Solution:
    def sortedSquares(self, A: List[int]) -> List[int]:
        out = []
        for num in A:
            out.append(num**2)
        return self.sorte(out)      

    def sorte(self, out):
        if len(out)<2:
            return out
        else:
            return self.sorte([each for each in out[1:] if each < out[0]]) + [out[0]] + self.sorte([each for each in out[1:] if each >= out[0]])

【讨论】:

  • 谢谢。但我使用的是 Leet 代码平台,不知怎的,我收到了类似“函数未定义/运行时错误”之类的错误。
  • 我已经添加了接受的代码。请检查。您的代码将给出“超出时间限制”。
  • 是的,实际上。同样,我现在正在考虑它,我应该如何通过重新编辑和优化代码来通过所有测试用例。你能建议我解决同样的问题吗?
  • 在您的 sorte 方法中,您不能使用任何现有的算法进行排序,而不是使用递归进行排序,这会增加其时间复杂度吗? Python 的内置排序算法是 TimSort。它的时间复杂度是 nLogn。
  • geeksforgeeks.org/timsort -> 点击此处了解有关 TimSort 的更多信息。
最近更新 更多