问题描述
我在 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)。明白了吗?