剑指offer面试题22:链表中倒数第k个节点

这道题也不难,先遍历一遍获得链表长度,再遍历获得答案头节点,要判断链表长度与k的大小关系。

    public ListNode getKthFromEnd(ListNode head, int k) {
    	int len = 0;
    	ListNode temp = head;
    	while(temp!=null) {
    		len++;
    		temp = temp.next;
    	}
    	int in_order_index = len - k;
    	if(in_order_index >= 0) {
    		temp = head;
        	for(int count = 0;count<in_order_index;count++) {
        		temp = temp.next;
        	}
    	}else {
    		temp = null;
    	}
    	
		return temp;

    }

但是答案还是给出了更简洁的方法。

设置两个指针,在一次遍历中,两个指针间距为k-1个节点,这样等到先走的节点到了尾节点,后走的节点,正好落在了倒数第k个节点。这个方法只需要遍历一遍。

而且还要判断,输入链表头节点是否为空,和k的值是否为正整数,这两点都没有考虑到。

猜你喜欢

转载自blog.csdn.net/qq_40473204/article/details/112211703