• 206. 反转链表


    https://leetcode-cn.com/problems/reverse-linked-list/

    反转一个单链表。

    示例:

    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL
    进阶:
    你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

    自己的想法:头插法,每次找到最后一个节点以及它的前驱,第一个插入头结点之后,然后一个个插入这个节点之后。

    代码:

    class Solution {
        public ListNode reverseList(ListNode head) {
            if(head==null || (head.next==null))
            {
                return head;
            }
            ListNode HeadReal = new ListNode(-999);
            ListNode Temp = new ListNode(-999);
            ListNode Final=new ListNode(-999);
            ListNode Count=new ListNode(-999);
            ListNode test=new ListNode(-999);
            long lenth=0;
    
            HeadReal.next=head;
            for(Count=HeadReal.next;Count!=null;Count=Count.next)
            {
                lenth=lenth+1;
            }
    
    
            
                
                 for(Temp=HeadReal.next;Temp.next.next!=null;Temp=Temp.next)
                {
                // System.out.println(Temp.val);
                }
                // System.out.println(Temp.val);
                Final=Temp.next;
                Final.next=HeadReal.next;
                HeadReal.next=Final;
                Temp.next=null;
                head=Final;
                HeadReal.next=head;
    
                // System.out.println(head.val);
            // for(int)
            for(int i=0;i<lenth-2;i++)
            {
                for(Temp=HeadReal.next;Temp.next.next!=null;Temp=Temp.next)
                {
                // System.out.println(Temp.val);
                }
                // System.out.println("Temp.val");
                // System.out.println(Temp.val);
                Final=Temp.next;
                Final.next=HeadReal.next.next;
                HeadReal.next.next=Final;
                Temp.next=null;
                HeadReal.next=Final;
    
            }
                 
    
                //  System.out.println("HeadReal.next.next");
                // System.out.println(HeadReal.next.next.val);
                
                // HeadReal.next=Final;
                // System.out.println("Final.val");
                // System.out.println(Final.val);
                // Temp.next=null;
    
                // HeadReal.next.next=test;
                // System.out.println("head.val");
                // System.out.println(head.next.val);
    
    
    
              
    
    
    
           
    
    
            // System.out.println(head.val);
            // System.out.println(head.next.val);
            // System.out.println(HeadReal.next.val);
            // HeadReal.next
    
            // for(Temp=head;Temp!=null;Temp=Temp.next)
            // {
            //     System.out.println(Temp.val);
            // }
    
    
    
    
    
    
    
    
            
            return head;
        }
    }

    然后,Leetcode官方解答:

    public ListNode reverseList(ListNode head) {
        ListNode prev = null;
        ListNode curr = head;
        while (curr != null) {
            ListNode nextTemp = curr.next;
            curr.next = prev;
            prev = curr;
            curr = nextTemp;
        }
        return prev;
    }

     查看题解:https://leetcode-cn.com/problems/reverse-linked-list/solution/dong-hua-yan-shi-206-fan-zhuan-lian-biao-by-user74/

    这个方法之后可以用再别的翻转的方式上。

  • 相关阅读:
    Java学习笔记_180706_接口实现、类继承、多态、转型
    poj 1279 求半平面交的 面积(推荐)
    半平面交 模板 poj 3335 poj 3130 poj 1474 判断半平面交是否为空集
    高斯消元 zoj 3645 poj 1222/XOR消元
    向量旋转专题
    hdu 1524 A Chess Game SG函数(有向无环图-拓扑图)博弈 (二维) + dfs(模板)
    HDOJ1079&POJ1082&ZOJ1024 Calendar Game [找规律博弈]
    转 博弈类题目小结(hdu,poj,zoj)
    poj 3080 get_next + kmp + 字符数组做函数参数 + 数组下标从1 开始
    poj Area 1265 求面积+ 多边形边上的点的个数+ 多边形内点个数
  • 原文地址:https://www.cnblogs.com/William-xh/p/13637114.html
Copyright © 2020-2023  润新知