File tree

9 files changed

+196
-0
lines changed

9 files changed

+196
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution:
2+
def reverseList(self, head):
3+
prev = None
4+
cur = head
5+
6+
while cur:
7+
temp = cur.next
8+
cur.next = prev
9+
prev = cur
10+
cur = temp
11+
12+
return prev
13+
14+
class Solution2:
15+
def reverseList(self, head):
16+
if not head or not head.next: return head
17+
18+
reversed_node = self.reverseList(head.next)
19+
head.next.next = head
20+
head.next = None
21+
22+
return reversed_node
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution:
2+
def reverseBetween(self, head, m, n):
3+
if m == n: return head
4+
5+
prev = None
6+
cur = head
7+
for _ in range(m-1):
8+
prev = cur
9+
cur = cur.next
10+
11+
last_node_left_part = prev
12+
last_node_sub_list = cur
13+
14+
next_node = None
15+
for _ in range(n-m+1):
16+
next_node = cur.next
17+
cur.next = prev
18+
prev = cur
19+
cur = next_node
20+
21+
if last_node_left_part:
22+
last_node_left_part.next = prev
23+
else:
24+
head = prev
25+
26+
last_node_sub_list.next = cur
27+
28+
return head
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution:
2+
def reverseKGroup(self, head, k):
3+
if not head or not head.next or k == 1: return head
4+
5+
n = 0
6+
cur = head
7+
while cur:
8+
n += 1
9+
cur = cur.next
10+
11+
prev = None
12+
next = None
13+
newHead = None
14+
t1 = None
15+
t2 = head
16+
cur = head
17+
18+
while (n >= k):
19+
for _ in range(k):
20+
next = cur.next
21+
cur.next = prev
22+
prev = cur
23+
cur = next
24+
25+
if not newHead: newHead = prev
26+
if t1: t1.next = prev
27+
t2.next = cur
28+
t1 = t2
29+
t2 = cur
30+
prev = None
31+
n -= k
32+
33+
return newHead
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import random
2+
3+
class Solution:
4+
5+
def __init__(self, nums):
6+
self.original = nums
7+
8+
def reset(self):
9+
"""
10+
Resets the array to its original configuration and return it.
11+
"""
12+
return self.original
13+
14+
def shuffle(self):
15+
"""
16+
Returns a random shuffling of the array.
17+
"""
18+
arr = self.original.copy()
19+
for i in range(len(arr)):
20+
swap_idx = random.randrange(i, len(arr))
21+
arr[i], arr[swap_idx] = arr[swap_idx], arr[i]
22+
return arr
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class Node:
2+
def __init__(self, val, min):
3+
self.val = val
4+
self.min = min
5+
6+
class MinStack:
7+
8+
def __init__(self):
9+
"""
10+
initialize your data structure here.
11+
"""
12+
self.data = []
13+
14+
15+
def push(self, x: int) -> None:
16+
if len(self.data) == 0:
17+
self.data.append(Node(x, x))
18+
else:
19+
top = self.top_node()
20+
21+
if x < top.min:
22+
self.data.append(Node(x, x))
23+
else:
24+
self.data.append(Node(x, top.min))
25+
26+
def pop(self) -> None:
27+
self.data.pop().val
28+
29+
def top(self) -> int:
30+
return self.top_node().val
31+
32+
def top_node(self):
33+
return self.data[len(self.data)-1]
34+
35+
def getMin(self) -> int:
36+
return self.top_node().min
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def fizzBuzz(self, n: int):
3+
res = []
4+
5+
for num in range(1, n+1):
6+
if num % 15 == 0:
7+
res.append("FizzBuzz")
8+
elif num % 3 == 0:
9+
res.append("Fizz")
10+
elif num % 5 == 0:
11+
res.append("Buzz")
12+
else:
13+
res.append(str(num))
14+
15+
return res
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution:
2+
def countPrimes(self, n: int) -> int:
3+
if n < 2: return 0
4+
5+
count = 0
6+
arr = [True for _ in range(n)]
7+
arr[0] = arr[1] = False
8+
p = 2
9+
10+
while p * p < n:
11+
if arr[p]:
12+
for i in range(p*p, n, p):
13+
arr[i] = False
14+
p += 1
15+
16+
for val in arr:
17+
if val: count += 1
18+
19+
return count
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Solution:
2+
def isPowerOfThree(self, n: int) -> bool:
3+
maxPowerOfThree = 1162261467
4+
return n > 0 and maxPowerOfThree % n == 0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution:
2+
def romanToInt(self, s: str) -> int:
3+
mapping = {'I': 1,'V': 5,'X': 10,'L': 50,'C': 100,'D': 500,'M': 1000}
4+
prev = 0
5+
cur = 0
6+
total = 0
7+
8+
for char in s[::-1]:
9+
cur = mapping[char]
10+
if prev > cur:
11+
total -= cur
12+
else:
13+
total += cur
14+
prev = cur
15+
16+
return total
17+

0 commit comments

Comments
 (0)