algorithm - 92. 反转链表 II

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

递归思路:
递归反转链表

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public var val: Int
 *     public var next: ListNode?
 *     public init() { self.val = 0; self.next = nil; }
 *     public init(_ val: Int) { self.val = val; self.next = nil; }
 *     public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
 * }
 */
class Solution {

    var accessor: ListNode?
    func reverseN(_ head: ListNode?, _ n: Int) -> ListNode? {
        if n==1 {
            accessor = head!.next
            return head
        }
        if head!.next == nil {
            return head
        }
        let last = reverseN(head!.next, n-1)
        head!.next!.next = head
        head!.next = accessor
        return last
    }

    func reverseBetween(_ head: ListNode?, _ left: Int, _ right: Int) -> ListNode? {
        if left == 1 {
            return reverseN(head, right)
        }
        head!.next = reverseBetween(head!.next, left-1, right-1)
        return head

    }
}
2021/3/4 posted in  LeetCode解题记录

algorithm - [225] 用队列实现栈

LeetCode link

方法一:

在pop方法中将 队列1(inQueue) 逐一dequeue 添加到 队列2(outQueue)中,直到仅剩下一个元素(也就是顶部元素)。

这时候再单独将队列1中剩余的元素 dequeue 并返回。

最后交换 队列1 和 队列2 的内容

Read more   2019/7/12 posted in  LeetCode解题记录

algorithm - 232.栈实现队列

Read more   2019/7/12 posted in  LeetCode解题记录

algorithm - 20.有效的括号

Read more   2019/7/11 posted in  LeetCode解题记录

algorithm - 142. 环形链表 2

Read more   2019/7/9 posted in  LeetCode解题记录

algorithm - 141. 环形链表

Read more   2019/7/9 posted in  LeetCode解题记录

algorithm - 24.两两交换链表中的节点

Read more   2019/7/8 posted in  LeetCode解题记录

algorithm - 206.链表反转

Read more   2019/7/4 posted in  LeetCode解题记录

algorithm - 2.两数相加

LeetCode link

原来的思路如下,将入参两个链表转化为Int值,相加之后将Int值转化为链表。

Read more   2019/7/4 posted in  LeetCode解题记录

algorithm - 1.两数之和

Read more   2019/7/4 posted in  LeetCode解题记录