题解 | #链表中倒数最后k个结点#

链表中倒数最后k个结点

https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9

此题难度太小,但有很多可以使用的简单办法,看完感到自己的方法可以再进步,特此分享

  public ListNode FindKthToTail(ListNode pHead, int k) {
        int n = len(pHead);
        if (n < k) {
            return null;
        }
        ListNode cur=pHead;
        int m=n-k;
        while (m!=0) {
            cur=cur.next;
            m--;
        }
      return cur;
    }
    public int len(ListNode head) {
        ListNode cur = head;
        int count = 0;
        if (cur==null) {
            return 0;
        }
       while (cur!=null){
           cur=cur.next;
           count++;
       }
       return count;
    }
}
此方法为自己的土方法,还有思路更简单的方法如下:

class Solution:
    def FindKthToTail(self , pHead , k ):
        # write code here
        # 快慢指针
        fast = pHead
        slow = pHead
        # 快指针先走k步
        for i in range(0, k):
            if not fast:
                return None
            fast = fast.next
        # 双指针同时行走
        while fast:
            fast = fast.next
            slow = slow.next
        return slow

运用快慢指针,让快指针先走k步,再让慢指针跟上。

如上


全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务