File tree

7 files changed

+167
-0
lines changed

7 files changed

+167
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def hasCycle(self, head):
3+
slow = head
4+
fast = head
5+
6+
while fast and fast.next:
7+
slow = slow.next
8+
fast = fast.next.next
9+
10+
if slow == fast:
11+
return True
12+
13+
return False
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution:
2+
def detectCycle(self, head):
3+
slow = head
4+
fast = head
5+
6+
while fast and fast.next:
7+
slow = slow.next
8+
fast = fast.next.next
9+
10+
if slow == fast:
11+
break
12+
13+
if not fast or not fast.next:
14+
return None
15+
16+
slow = head
17+
while slow != fast:
18+
slow = slow.next
19+
fast = fast.next
20+
21+
return slow
22+
23+
24+
class Solution2:
25+
def detectCycle(self, head):
26+
cur = head
27+
seen = set()
28+
29+
while cur:
30+
if cur in seen:
31+
return cur
32+
seen.add(cur)
33+
cur = cur.next
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class Solution:
2+
def isHappy(self, n: int) -> bool:
3+
slow = n
4+
fast = n
5+
6+
while True:
7+
slow = self.findSquare(slow)
8+
fast = self.findSquare(self.findSquare(fast))
9+
if slow == fast:
10+
break
11+
12+
return slow == 1
13+
14+
def findSquare(self, n):
15+
square = 0
16+
while n != 0:
17+
square += (n % 10) ** 2
18+
n = n // 10
19+
return square
20+
21+
class Solution2:
22+
def isHappy(self, n: int) -> bool:
23+
seen = set()
24+
25+
while n not in seen:
26+
seen.add(n)
27+
n = self.find_square(n)
28+
29+
return n == 1
30+
31+
def find_square(self, num: int) -> int:
32+
square = 0
33+
34+
while num != 0:
35+
square += (num % 10) ** 2
36+
num = num // 10
37+
38+
return square
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def middleNode(self, head):
3+
slow = head
4+
fast = head
5+
6+
while fast and fast.next:
7+
slow = slow.next
8+
fast = fast.next.next
9+
10+
return slow
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution:
2+
def merge(self, intervals):
3+
if len(intervals) <= 1: return intervals
4+
5+
intervals.sort(key=lambda interval: interval[0])
6+
mergedIntervals = []
7+
start = intervals[0][0]
8+
end = intervals[0][1]
9+
10+
for i in range(1, len(intervals)):
11+
interval = intervals[i]
12+
13+
if interval[0] <= end:
14+
end = max(end, interval[1])
15+
else:
16+
mergedIntervals.append([start, end])
17+
start = interval[0]
18+
end = interval[1]
19+
20+
mergedIntervals.append([start, end])
21+
return mergedIntervals
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class Solution:
2+
def insert(self, intervals, newInterval):
3+
res = []
4+
i = 0
5+
6+
while i < len(intervals) and intervals[i][1] < newInterval[0]:
7+
res.append(intervals[i])
8+
i += 1
9+
10+
while i < len(intervals) and intervals[i][0] <= newInterval[1]:
11+
newInterval[0] = min(newInterval[0], intervals[i][0])
12+
newInterval[1] = max(newInterval[1], intervals[i][1])
13+
i += 1
14+
15+
res.append(newInterval)
16+
17+
while i < len(intervals):
18+
res.append(intervals[i])
19+
i += 1
20+
21+
return res
22+
23+
class Solution2:
24+
def insert(self, intervals, newInterval):
25+
if not intervals: return [newInterval]
26+
27+
left = []
28+
right = []
29+
new_start = newInterval[0]
30+
new_end = newInterval[1]
31+
32+
for start, end in intervals:
33+
if end < new_start:
34+
left.append([start, end])
35+
elif start > new_end:
36+
right.append([start, end])
37+
else:
38+
new_start = min(new_start, start)
39+
new_end = max(new_end, end)
40+
41+
return left + [[new_start, new_end]] + right
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution:
2+
def canAttendMeetings(self, intervals):
3+
if len(intervals) < 2: return True
4+
5+
intervals.sort(key=lambda interval: interval[0])
6+
7+
for i in range(1, len(intervals)):
8+
if intervals[i][0] < intervals[i-1][1]:
9+
return False
10+
11+
return True

0 commit comments

Comments
 (0)