[C#版剑指offer]链表中倒数第K个节点 男娘i 2023-02-23 08:17 2阅读 0赞 对题目进行分析,可以知道想要找到链表的倒数第K个节点,则需要先遍历链表,得到链表的总节点长度,然后通过(节点长度-k-1)就能得出倒数第K个节点,但是这样需要遍历链表两次,如果要求遍历一次去找到这个节点,则需要构建两个指针。 构建两个指针P1,P2,并且两个指针之间在开始位置间隔k-1个节点,这样保持这个间隔一直总体移动,直到P2到达链表尾部,此时P1所在的位置就是链表的倒数第K个节点。但是必须考察代码的鲁棒性。 public static ListNode findKTotailNode(ListNode listnode,int k) { ListNode p1 = listnode; ListNode p2 = listnode; if(listnode==null || k <= 0) { return null; } int i = 0; for (; p1.next != null; i++) { if (i >= k) { p2 = p2.next; } p1 = p1.next; } return i<k? null:p2; }
还没有评论,来说两句吧...