如何确认我的答案是否具有 O(1) 空间复杂度和数组的修改?这是反向字符串 Leetcode 问题

问题描述

我在 Leetcode 上遇到了一个问题 - 这是问题所在:

编写一个反转字符串的函数。输入字符串作为字符数组 char[] 给出。 不要为另一个数组分配额外的空间,您必须通过使用 O(1) 额外内存就地修改输入数组来实现。 您可以假设所有字符都由可打印的 ascii 字符组成。

我的解决方案是

    def reverseString(s):
        """
        Do not return anything,modify s in-place instead.
        """
        
        temp = ""
        for index,value in enumerate(s):
            temp+=value
        
        s.clear()
        for i in "".join(reversed(temp)):
            s.append(i)
   
    reverseString(["h","e","l","o"])


我的解决方案有效并被 Leetcode 接受。它也通过了所有的测试用例。但是,我对空间和时间的概念仍然陌生,不确定我的解决方案是否遵循 O(1) 的要求并就地修改数组。如果有人可以确认它是否可以并教我如何确认这一点,那将很有帮助。谢谢!

解决方法

O(1) 意味着您使用额外的变量常量内存来解决问题。相反,您使用的变量的额外内存与问题的数据大小有关。例如,要反转的字符串数组的大小是 x,您使用 y=ax+b 变量内存意味着 O(n)。 y=ax^2+bx+c 表示 O(n^2)。明白了吗?