Python教程

刷题网址收藏 _python_链表数组字符串转换

本文主要是介绍刷题网址收藏 _python_链表数组字符串转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

编程练习:

1、LeetCode或intCode, CodeChef可免费查看他人源码;

2、可独立在线IDE验证的:LeetCode、Anycodes、Fenby、CodeChef、Dooccn;

3、仅需学习编程语言:Anycodes或Frenby;

4、更系统全面的深入学习,建议到实验楼或极客学院;

 

 

剑指 Offer 22. 链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。

例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

示例:

给定一个链表: 1->2->3->4->5, 和 k = 2.

返回链表 4->5.

参考地址:LeetCode初级算法的Python实现--链表 - NSGUF - 博客园 (cnblogs.com)

import json

# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
        node, n = head, 0
        while node:
            node = node.next
            n += 1

        node = head
        for _ in range(n-k):
            node = node.next

        return node

# 将列表转换成链表
def stringToListNode(str_input):
    numbers = str_input
    dummyRoot = ListNode(0)
    ptr = dummyRoot
    for number in numbers:
        ptr.next = ListNode(number)
        ptr = ptr.next
    ptr = dummyRoot.next
    return ptr

# 将链表转换成字符串
def listNodeToString(node):
    if not node:
        return "[]"
    result = ""
    while node:
        result += str(node.val) + ", "
        node = node.next
    return "[" + result[:-2] + "]"

if __name__ == '__main__':
    head_input = json.loads(input().strip())
    k_input = int(input().strip())

    ptr_output = stringToListNode(head_input)
    result = Solution().getKthFromEnd(ptr_output, k_input)
    print(listNodeToString(result))

 

这篇关于刷题网址收藏 _python_链表数组字符串转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!