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

偏执的太偏执、 2022-12-07 12:18 224阅读 0赞

题目:

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。

示例:

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

题解:

  1. /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */
  2. class Solution {
  3. public ListNode getKthFromEnd(ListNode head, int k) {
  4. ListNode cur = head;
  5. int len = 0;
  6. //计算链表的长度
  7. while(cur != null) {
  8. len++;
  9. cur = cur.next;
  10. }
  11. //让cur重新指向head
  12. cur = head;
  13. //找到第len - k个结点
  14. for (int i = 0; i < len - k; i ++){
  15. cur = cur.next;
  16. }
  17. return cur;
  18. }
  19. }

发表评论

表情:
评论列表 (有 0 条评论,224人围观)

还没有评论,来说两句吧...

相关阅读