• 【剑指Offer】15、反转链表


      题目描述:

      输入一个链表,反转链表后,输出新链表的表头。

      解题思路:

      本题比较简单,有两种方法可以实现:(1)三指针。使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。将指针反转后,三个结点依次前移即可。(2)递归方法。同样可以采用递归来实现反转。将头结点之后的链表反转后,再将头结点接到尾部即可。

      编程实现(Java):

        //方法一:三指针
        public ListNode ReverseList(ListNode head) {
            if(head==null)
                return null;
            ListNode first=null; 
            ListNode second=head;
            ListNode third=head.next;
            while(third!=null){ 
                second.next=first; //三指针之间的变换
                first=second;
                second=third;
                third=third.next;
            }
            second.next=first;
            return second;
        }
    
        //方法二:递归
        public ListNode ReverseList(ListNode head) {
        	 if(head==null||head.next==null)
                return head;
            ListNode temp=ReverseList(head.next);
            head.next.next=head;
            head.next=null;
            return temp;   
        }
    
  • 相关阅读:
    贝叶斯网路的采样
    马尔可夫蒙特卡洛采样法
    高斯分布的采样
    常见的采样方法
    正则化
    随机梯度下降
    机器学习中的优化问题
    【原】涉及数据库的单元测试-JTeser
    高度和宽度
    定位position
  • 原文地址:https://www.cnblogs.com/gzshan/p/10765056.html
Copyright © 2020-2023  润新知