美文网首页剑指offer
剑指offer(十五)反转链表

剑指offer(十五)反转链表

作者: 向前的zz | 来源:发表于2020-04-03 10:49 被阅读0次

    点击进入 牛客网题库:反转链表

    题目描述

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

    上来,想了10分钟,然后就撸了一个

       /**
         * 时间复杂度 O(n) 
         * 空间复杂度 O(n)
         * @param head
         * @return
         */
     public ListNode ReverseList(ListNode head) {
            final ArrayList<ListNode> list = new ArrayList<>();
            while (head != null) {
                list.add(0, head);
                head = head.next;
            }
    
            final int size = list.size();
            ListNode tmpNode = list.get(0);
            for (int i = 1; i < size; i++) {
                tmpNode.next = list.get(i);
                tmpNode = tmpNode.next;
            }
            //一定要置为null,不然不通过,就相当于没有反转成功
            list.get(size -1).next = null;
            return list.get(0);
        }
    

    对链表的恐惧,可想而知

    方法二

        public ListNode ReverseList(ListNode head) {
            ListNode next = null;
            ListNode pre = null;
    
            ListNode lastHead = head;
    
            while(lastHead != null) {
                next = lastHead.next;
                lastHead.next = pre;
    
                pre = lastHead;
                lastHead = next;
            }
            return pre;
        }
    

    相关文章

      网友评论

        本文标题:剑指offer(十五)反转链表

        本文链接:https://www.haomeiwen.com/subject/dbwcphtx.html