• 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/

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

  • 相关阅读:
    动态载入DLL
    在DELPHI中使用自定义光标
    Delphi实现提取可执行文件内部所有图标
    delphi 网络函数
    delphi制作dll
    实现半透明效果
    自绘按钮,添加Color属性(转载)
    为汉语名字生成首字母助记码
    DELPHI 获取本月 的第一天 和 最后一天
    GRID用法(取行、列值;定位选中某行等等)
  • 原文地址:https://www.cnblogs.com/William-xh/p/13637114.html
Copyright © 2020-2023  润新知