【剑指offer】求链表中倒数第k个节点

链表是自己编写的数据结构,没有官方的类和方法可用。

看到解题中一个方法很好,用两个指针,第一个指针先移动k,定出一个大小为k的窗口,然后两个窗口一起移动。

最后,当先移动的窗口到了末尾时,另一个指针就是要找的节点。

/* class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
} */    

public ListNode FindKthToTail(ListNode head,int k) {
    	if(head== null ||k<=0) {
    		return null;
    	}
    	ListNode pre = head;
    	ListNode last = head;
    	for (int i = 1; i < k; i++) { //之前从0开始 错了。
			if(pre.next != null) {
				pre = pre.next;
			}
			else  {
				return null;
			}	
		}
    	//此时已经链表中至少有k个元素了
    	while(pre.next != null) {
    		pre = pre.next;
    		last = last.next;
    	}
		return last;
    	
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值