• 剑指offer:链表中倒数第K个结点


    题目描述:

    输入一个链表,输出该链表中倒数第k个结点。

     思路:制造了一个K长度的尺子,把尺子从头往后移动,当尺子的右端与链表的末尾对齐的时候,尺子左端所在的结点就是倒数第k个结点
    首先想到的是使用两个指针,遍历两次,第一次求得head的长度N 然后第二次遍历求N-K+1
    但要求只能使用一次遍历
    快慢指针问题,则定义两个指针,一个先走K-1步,然后第二个开始走,当第一个走到尽头的时候,第二个刚好走到N-K+1步
    注意三种异常情况保证代码的鲁棒性,
    1、K=0的情况,
    2、链表为空的情况
    3、k<N的情况 用p.next==null判断

     1 public class DaoshuK {
     2     public ListNode FindKthToTail(ListNode head,int k) {
     3         ListNode p = head;
     4         ListNode q = null;
     5         if(k==0||head == null){return null;}
     6         for(int i = 0;i<k-1;i++){
     7             if(p.next==null){return null;}
     8             else {
     9                 p = p.next;
    10             }
    11         }
    12         q = head;
    13         while(p.next!=null){
    14             p = p.next;
    15             q = q.next;
    16         }
    17         return q;
    18     }
    19     public static void main(String[] args) {
    20         // TODO Auto-generated method stub
    21 
    22     }
    23 
    24 }
  • 相关阅读:
    SpringMVC-------1.spriingMVC简介和简单案例
    MyBatis-----7.pageHelper分页助手
    MyBatis-----4.实现关联表查询
    MyBatis-----6.逆向工程(generator)
    MyBatis-----1.MyBatis简介和使用
    MyBatis-----2.通过映射接口实现CRUD
    Spring-2
    Spring-1
    php调用阿里云手机归属地查询
    php身份证验证
  • 原文地址:https://www.cnblogs.com/zlz099/p/8572414.html
Copyright © 2020-2023  润新知