zoukankan      html  css  js  c++  java
  • 剑指 Offer 22. 链表中倒数第k个节点

    class Solution {
        public ListNode getKthFromEnd(ListNode head, int k) {
            ListNode p = head;
            int count = 0;
            while(p!=null){
                count++;
                p = p.next;
            }
            if(k>count) return null;
            int m = count - k ;
            while(m>0){
                head = head.next;
                m--;
            }
            return head;
        }
    }

    先确定结点总数,再遍历。


    方法二:

    一次遍历,两个指针

    class Solution {
        public ListNode getKthFromEnd(ListNode head, int k) {
            if(head == null || k == 0) return null;
            ListNode p = head;
            ListNode q = head;
            while (p!=null){
                while(k>0){
                    if(p == null) return null;
                    p = p.next;
                    k--;
                }
                if(p != null) {
                    p = p.next;
                    q = q.next;
                }
            }
            return q;
        }
    }

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    规划
    学习规划
    续约
    每日一记
    每日记录
    《代码大全》第八章 防御式编程
    《代码大全》第七章
    平安夜
    每日一记
    培养良好的生活习惯
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13470492.html
Copyright © 2011-2022 走看看