题目
输入一个list,将其翻转,不能够使用新的list,只能在原list上完成。
例子
- None -> None
- [] -> []
- [1,2,3,4] -> [4,3,2,1]
- [‘a’,’c’,’d’,’e’] -> [‘e’,’d’,’c’,’a’]
tips
1.头尾交换元素
答案
解法:1
def reverse(chars):
if chars:
size = len(chars)
for i in range(size // 2):
chars[i], chars[size - 1 - i] = chars[size - 1 - i], chars[i]
return chars
性能:
- 时间复杂度
O(n)
- 空间复杂度
O(1)
关键点:1.头尾交换元素
解法2:
def reverse(chars):
if chars is None or chars == []:
return chars
result = []
for char in chars:
result.insert(0, char)
return result
性能:
- 时间复杂度
O(n)
- 空间复杂度
O(n)
关键点:
- 构造一个新的列表,使用insert()插入元素
解法3:
def reverse(chars):
if chars is None or chars == []:
return chars
chars.reverse()
return chars
性能:
- 时间复杂度
O(n)
- 空间复杂度
O(1)
关键点:
- 使用列表的reverse()方法实现列表反转