美文网首页
力扣算法 - 反转链表

力扣算法 - 反转链表

作者: Mr_Bob_ | 来源:发表于2020-07-06 16:03 被阅读0次

    反转链表

    反转一个单链表。

    示例:

    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL

    Java解法
    
        /**
         * 头插法
         */
        public ListNode reverseList1(ListNode head) {
            if (head == null || head.next == null) return head;
    
            ListNode newHead = null;
            while (head != null) {
                ListNode temp = head.next;
                head.next = newHead;
                newHead = head;
                head = temp;
            }
            return newHead;
        }
        /**
         * 递归思想
         * 注意:  可以假设 reverseList 函数已经实现功能
         * head = 1
         * 调用 reverseList(head.next) 相当于  reverseList(2)  这个函数假设已经实现反转 null 5 4 3 2
         * 只需要单独处理 head 节点 2.next = 1  , 2.next = null
         * 递归处理 直到head为null
         */
        public ListNode reverseList(ListNode head) {
            if (head == null || head.next == null) return head;
    
            ListNode newNode = reverseList(head.next);
            head.next.next = head;
            head.next = null;
            return newNode;
        }
    
    Swift解法
    
        // 递归法
        func reverseList1(_ head: ListNode?) -> ListNode? {
            if head == nil || head?.next == nil {
                return head
            }
            
            let newHead: ListNode? = reverseList(head?.next)
            head?.next?.next = head
            head?.next = nil
            
            return newHead
        }
         
        // 头插法
        func reverseList(_ head: ListNode?) -> ListNode? {
            if head == nil || head?.next == nil {
                return head
            }
            
            var headTemp = head
            
            var newHead: ListNode? = nil
            while headTemp != nil {
                let temp = headTemp?.next
                headTemp?.next = newHead
                newHead = headTemp;
                headTemp = temp
            }
            
            return newHead
        }
    

    相关文章

      网友评论

          本文标题:力扣算法 - 反转链表

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