首页 > 代码库 > CTCI 2.2
CTCI 2.2
Implement an algorithm to find the kth to last element of a singly linked list.
Classical "Runner" Technique of linkedlist
/*Use two pointers, forward one K nodes, then the two pointers form a "window" contains K nodes.Then move two pointer one step by one step until the first one reach the end, return the second node.Pay attention to the situation when k is 0 or k is the length of the linked list, there migth be some tricks. */public class KToLastNode { public Node kToLastNode(Node head, int k) { Node sent = new Node(0); sent.next = head; Node first = sent; while(k > 0) { first = first.next; k--; } Node second = sent; while(first != null) { second = second.next; first = first.next; } return second; } public void print(Node head) { Node temp = head; while(temp != null) { System.out.print(temp.val + " "); temp = temp.next; } System.out.println(""); } public static void main(String[] args) { Node node1 = new Node(1); Node node11 = new Node(1); Node node111 = new Node(1); Node node2 = new Node(2); Node node22 = new Node(2); Node node3 = new Node(3); node1.next = node11; node11.next = node2; node2.next = node111; node111.next = node3; node3.next = node22; Node head = node1; KToLastNode kt = new KToLastNode(); kt.print(kt.kToLastNode(head, 2)); }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。