6. Zigzag Conversion (medium)
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows == 1:
return s
temp = [[] for x in range(numRows)]
cur, dir = 0, 0
for c in s:
temp[cur].append(c)
if cur == 0:
dir = 1
elif cur == numRows - 1:
dir = -1
cur = cur + dir
res = ''
for p in temp:
res += ''.join(p)
return res
147. Insertion Sort List (medium)
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def insertionSortList(self, head):
dummyHead = ListNode(0)
dummyHead.next = nodeToInsert = head
while head and head.next:
if head.val > head.next.val:
# Locate nodeToInsert.
nodeToInsert = head.next
# Locate nodeToInsertPre.
nodeToInsertPre = dummyHead
while nodeToInsertPre.next.val < nodeToInsert.val:
nodeToInsertPre = nodeToInsertPre.next
head.next = nodeToInsert.next
# Insert nodeToInsert between nodeToInsertPre and nodeToInsertPre.next.
nodeToInsert.next = nodeToInsertPre.next
nodeToInsertPre.next = nodeToInsert
else:
head = head.next
return dummyHead.next