LeetCode刷题(十一)

116 阅读1分钟

返回倒数第 k 个节点

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

注意:本题相对原题稍作改动

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:

给定的 k 保证是有效的。

解题思路:
先遍历链表获取链表长度length,获取倒数第k个,也就是从头开始遍历(length-k)次,返回当前节点的val
java

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int kthToLast(ListNode head, int k) {
        ListNode l = head;
        ListNode findk = head;

        int length = 0;
        while(l!=null){
            length = length + 1;
            l = l.next;
        }

        for(int i = 0; i < length - k;i++){
            findk =findk.next;
        }

        return findk.val;

    }
}

python

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

class Solution(object):
    def kthToLast(self, head, k):
        """
        :type head: ListNode
        :type k: int
        :rtype: int
        """
        l = head
        findk = head
        length = 0
        while l :
            length =length +1
            l = l.next
        for i in range (length-k):
            findk = findk.next
        return findk.val