zoukankan      html  css  js  c++  java
  • 2.2实现一个算法,找出单向链表中倒数第k个结点。

    //2.2实现一个算法,找出单向链表中倒数第k个结点。
    //a不返回该元素,仅打印该值。
    public static int nthToLast(LinkedListNode head, int k)
    {
        if (head == null)
        {
            return 0;
        }
        int i = nthToLast(head.next, k) + 1;
        if (i == k)
        {
            System.out.println(head.data);
        }
        return i;
    }
    
    //b使用c++,通过引用传值。这样一来,我们就可以返回结点值,而且也能通过传递指针更新计数器。
    node* nthToLast(node* head, int k, int& i)
    {
        if (head == NULL)
        {
            return NULL;
        }
        node* nd = nthToLast(head->next, k, i);
        i = i + 1;
        if (i == k)
        {
            return head;
        }
        return nd;
    }
    
    //c创建包裹类
    public class IntWrapper 
    {
        public int value = 0;
    }
    
    LinkedListNode nthToLastR2(LinkedListNode head, int k, IntWrapper i)
    {
        if (head == null)
        {
            return null;
        }
        LinkedListNode node = nthToLastR2(head.next, k ,i);
        i.value = i.value + 1;
        if (i.value == k)
        {
            return head;
        }
        return node;
    }

     我最喜欢下面这个

    //d迭代法,使用两个指针p1,p2,将他们分别指向链表中的两个相隔为k个结点的结点。
    LinkedListNode nthToLast(LinkedListNode head, int k)
    {
        if (k <= 0)
        {
            return null;
        }
        
        LinkedListNode p1 = head;
        LinkedListNode p2 = head;
        
        //将p2指向p1之后k个结点
        for(int i = 0; i < k - 1; i++)
        {
            if (p2 == null)
            {
                return null;
            }
            p2 = p2.next;
        }
        if (p2 == null)
        {
            return null;
        }
        
        while (p2.next != null)
        {
            p1 = p1.next;
            p2 = p2.next;
        }
        return p1;
    }
  • 相关阅读:
    Pyspider
    tornado websocket
    cookie、session、csrf
    python图片拼接
    SQLAlchemy查询
    tornado的ORM
    模板继承和UImodul 和 UImethods
    图像处理-05-浮雕效果处理
    图像处理-04-图像的黑白处理
    图像处理-03-实现图像的旋转
  • 原文地址:https://www.cnblogs.com/wuzhenyang/p/7758247.html
Copyright © 2011-2022 走看看