1 // 思想很巧妙,一个快指针,一个慢指针,二者相隔k-1  2 public ListNode FindKthToTail(ListNode head, int k) {  3 if (head == null || k <= 0) {  4 return null;  5  }  6 ListNode p = head;  7 // p是快指针,让p先走k-1步  8 for (int i = 0; i < k - 1; i++) {  9 if (p.next != null) { 10 p = p.next; 11 } else { 12 return null; 13  } 14  } 15 ListNode pre = head; 16 // pre是慢指针,快指针走完k-1步以后,p和pre一起以相同的速度走 17 while (p.next != null) { 18 p = p.next; 19 pre = pre.next; 20  } 21 // 此时,p指向最后一个节点,pre指向倒数第k个节点 22 return pre; 23 }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。