From 714a4cb00651fd22fd2f5e8a4f2fff816f5b0d83 Mon Sep 17 00:00:00 2001 From: Meng Wei Date: Thu, 11 Jan 2018 00:04:02 -0800 Subject: [PATCH] Reversed 2 linked list. Today we shared the song OldStreet. Time is really slow on the old street. --- 206-reverse-linked-list-in-two-ways | 34 ++++++++++++++++++++++ 92-reverse-linked-list-II | 44 +++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 206-reverse-linked-list-in-two-ways create mode 100644 92-reverse-linked-list-II diff --git a/206-reverse-linked-list-in-two-ways b/206-reverse-linked-list-in-two-ways new file mode 100644 index 0000000..b9010fe --- /dev/null +++ b/206-reverse-linked-list-in-two-ways @@ -0,0 +1,34 @@ +# Definition for singly-linked list. +# class ListNode(object): +# def __init__(self, x): +# self.val = x +# self.next = None + +# EASY +# Iteratively: T:O(N) S:O(1) +# Recursively: T:O(N) S:O(N) +class Solution(object): + def reverseList(self, head): + """ + :type head: ListNode + :rtype: ListNode + """ + # Iteratively + # rev = None + # while head!=None: + # temp = head.next + # head.next = rev + # rev = head + # head = temp + # return rev + + # Recursively + return self._reverse(head,None) + + def _reverse(self,head,prev): + if head == None: + return prev + else: + temp = head.next + head.next = prev + return self._reverse(temp,head) diff --git a/92-reverse-linked-list-II b/92-reverse-linked-list-II new file mode 100644 index 0000000..b67eaaa --- /dev/null +++ b/92-reverse-linked-list-II @@ -0,0 +1,44 @@ +# Medium +# O(N) O(1) + + +# Definition for singly-linked list. +# class ListNode(object): +# def __init__(self, x): +# self.val = x +# self.next = None + +class Solution(object): + def reverseBetween(self, head, m, n): + """ + :type head: ListNode + :type m: int + :type n: int + :rtype: ListNode + """ + i = 0 + if(m==n): + return head + dummy = ListNode(0) + dummy.next = head + ret = dummy + while dummy: + if i+1==m: + dummy.next = self.reverseBegin(dummy.next, n-i) + return ret.next + i += 1 + dummy = dummy.next + + def reverseBegin(self, node, k): + i = 0 + rev = None + ret = node + while i