题目如下:

要求:

我尝试写了一次代码,时间可以通过:
def perm(l):
if (len(l) <= 1):
return [l]
r = []
for i in range(len(l)):
s = l[:i] + l[i + 1:]
p = perm(s)
for x in p:
r.append(l[i:i + 1] + x)
return r
def judge(nums:list):
result = 0
for index in range(len(nums)):
if index+1 == len(nums):
result += abs(int(nums[index]) - int(nums[0]))
else:
result += abs(int(nums[index]) - int(nums[index+1]))
return result
def main():
length = int(input())
nums = list(map(int, input().split(" ")))
result = perm(nums)
end = 0
for nums in result:
n = judge(nums)
if n > end:
end = n
print(end)
if __name__ == '__main__':
main();
但是内存占用过大:

应该怎么优化代码呢