zoukankan      html  css  js  c++  java
  • 链表中倒数第K个结点

    题目描述

    emm,题目很简单,返回给定链表的倒数第k个节点

    解题思路

    这其实有多种解法,比如你可以先算出链表的总长度n,然后因为求的是倒数第k个节点,那也就是说求得是正数第n-k+1(经过n-k个指针);这种解法时间复杂度最坏情况下是O(2n)。

    第二种思路是使用快慢指针,快指针先走k步,然后快慢指针一同走,每次走一步。等到快指针为null的时候,返回慢指针所在的位置。慢指针所在的位置就是倒数第k个节点。

    注意判断指针为null的情况。

    代码实现

    public class Solution {
        public ListNode FindKthToTail(ListNode head,int k) {
            if(head==null||k<=0){
                return null;
            }
            //声明快慢指针
            ListNode slow=head,fast=head;
            //快指针先走k步
            while(k--!=0){
                if(fast!=null){
                    fast=fast.next;
                }else{
                    //注意提前为空的情况
                    return null;
                }
            }
            //快慢指针一起走
            while(fast!=null){
                slow=slow.next;
                fast=fast.next;
            }
            //返回慢指针所在位置
            return slow;
        }
    }
    
  • 相关阅读:
    提问回顾与个人总结
    软工结对作业
    软件工程第一次阅读作业
    软件工程第0次作业
    oo第四次博客总结
    第三次博客总结
    第二次博客作业
    OO第一次总结博客
    软工第二次作业
    软工第一次作业
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121844.html
Copyright © 2011-2022 走看看