题目:
https://www.nowcoder.com/ta/coding-interviews

输入一个链表:

按链表值从尾到头的顺序返回一个ArrayList。

定义链表:

1
2
3
4
class ListNode:
def __init__(self, x, next=None):
self.val = x
self.next = next

思考:

读取链表中的元素,放入列表,倒序输出

1
2
3
4
5
6
7
8
class Solution:
def printListFromTailToHead(self, listNode):
list=[]
while listNode:
list.append(listNode.val)
listNode = listNode.next
# return list[::1]#顺序列表
return list[::-1]#逆序列表

疑问:链表的顺序感觉上跟直觉相反?在这里,用循环创建链表结构,最先创建的是末节点.

1
2
3
4
5
6
7
# 根据节点定义,用循环创建一个链表结构:
# 5,4,3,2,1

head = None#最后一个指向None
for i in range(1, 6):
head = ListNode(i,head)
print("这是生成的链表数据",head.val)
这是生成的链表数据 1
这是生成的链表数据 2
这是生成的链表数据 3
这是生成的链表数据 4
这是生成的链表数据 5
1
2
3
4

method = Solution()
answer = method.printListFromTailToHead(head)
answer
[1, 2, 3, 4, 5]

python列表切片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- coding: UTF-8 -*-

s = 'abcdefg'
# 返回从起始位置到索引位置 2 处的字符串切片
print(s[:3]) # 输出 'abc'

# 返回从第三个索引位置到结尾的字符串切片
print(s[3:]) # 输出 'defg'

# 字符串逆序输出
print(s[::-1]) # 输出 'gfedcba'

# 输出从开始位置间隔一个字符组成的字符串
print(s[::2]) # 输出 'aceg'
print(range(10)[::2]) # 会直接输出range(0, 10, 2)
print(list(range(10)[::2])) #这样才能输出偶数:[0, 2, 4, 6, 8]

# 它们也可以相互结合使用。
# 从索引位置 6 到索引位置 2,逆向间隔一个字符
print(s[6:2:-2]) # 输出'ge'
abc
defg
gfedcba
aceg
range(0, 10, 2)
ge
1
print(range(10)[::2])
range(0, 10, 2)

reference:

1.https://blog.csdn.net/Datawhale/article/details/81947290

1
2