- 自己超时的一种解法,利用栈来存储结点,之后将栈内元素输出K词
class Solution:
def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
stack = []
out= []
while head:
stack.append(head.val)
head = head.next
while(k):
if K >链表长度:
return
else :
out.append(stack.pop)
return out
- 看完题面临的问题,如何求链表的长度?将head指针变为[head]数组,遍历数组求长度。
- 自己没有想到的问题:题解给出了双指针的解法以及想到了K值越界的问题。还有个问题,不知道怎么声明前指针,后指针。
//自己的双指针代码
class Solution:
def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
fommer, latter = head,head
s=[]
for _ in range(k):
fommer = fommer.next
while fommer:
fommer = fommer.next
latter = latter.next
while latter:
s.append(latter.val )
return s
//逼人的双指针代码,不同在最后一个return时候的处理。reture 指针就可以返回该指针之后的所有数值?
//因为此题是一个链表,所以return latter,后面的会一起输出,因为所有的数都是连在一串的。
class Solution:
def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
former, latter = head, head
for _ in range(k):
if not former: return
former = former.next
while former:
former, latter = former.next, latter.next
return latter