【剑指offer】面试题22:链表中倒数第 K 个节点
題目:?輸入一個鏈表,輸出該鏈表中倒數第k哥結點。為了符合大多數人的習慣,本題從1開始計數,即鏈表的尾結點是倒數第1個結點。例如一個鏈表有6個結點,從頭結點開始它們的值依次是1,2,3,4,5,6。這個鏈表的倒數第3個結點是值為4的結點。
代碼:
package offer;
import java.util.Scanner;
class Node2
{
?? ?int val;
?? ?Node2 next = null;
?? ?Node2(int val)
?? ?{
?? ??? ?this.val = val;
?? ?}
}
public class ti22 {
?? ?public static int findKNode(Node2 head,int k)
?? ?{
?? ??? ?Node2 p = head;
?? ??? ?if(k<=0||head==null)
?? ??? ?{
?? ??? ??? ?return -1;
?? ??? ?}
?? ??? ?while(k!=0)
?? ??? ?{
?? ??? ??? ?k--;
?? ??? ??? ?p = p.next;
?? ??? ??? ?if(p==null)
?? ??? ??? ?{
?? ??? ??? ??? ?return -1;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?Node2 q = head;
?? ??? ?while(p!=null)
?? ??? ?{
?? ??? ??? ?q = q.next;
?? ??? ??? ?p = p.next;
?? ??? ?}
?? ??? ?return q.val;
?? ?}
?? ?public static void main(String[] args)
?? ?{
?? ??? ?Scanner sc = new Scanner(System.in);
?? ??? ?int k = sc.nextInt();
?? ??? ?Node2 node1 = new Node2(1);
?? ??? ?Node2 node2 = new Node2(2);
?? ??? ?Node2 node3 = new Node2(3);
?? ??? ?Node2 node4 = new Node2(4);
?? ??? ?Node2 node5 = new Node2(5);
?? ??? ?Node2 node6 = new Node2(6);
?? ??? ?node1.next = node2;
?? ??? ?node2.next = node3;
?? ??? ?node3.next = node4;
?? ??? ?node4.next = node5;
?? ??? ?node5.next = node6;
?? ??? ?Node2 head = node1;
?? ??? ?System.out.println(findKNode(head,k));
?? ?}
}
?
總結
以上是生活随笔為你收集整理的【剑指offer】面试题22:链表中倒数第 K 个节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客网--蛇形矩阵(Java)
- 下一篇: 牛客网--牛牛找工作