Skip to content

Commit 720ae7e

Browse files
committed
2023-06-04
1 parent 2ec722e commit 720ae7e

File tree

731 files changed

+12838
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

731 files changed

+12838
-0
lines changed
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Definition for singly-linked list.
2+
# class ListNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.next = None
6+
7+
class Solution(object):
8+
def addTwoNumbers(self, l1, l2):
9+
"""
10+
:type l1: ListNode
11+
:type l2: ListNode
12+
:rtype: ListNode
13+
"""
14+
if self.getLength(l1) < self.getLength(l2):
15+
l1, l2 = l2, l1
16+
head = l1
17+
while(l2):
18+
l1.val += l2.val
19+
l1 = l1.next
20+
l2 = l2.next
21+
22+
p = head
23+
while(p):
24+
if p.val > 9:
25+
p.val -= 10
26+
if p.next:
27+
p.next.val += 1
28+
else:
29+
p.next = ListNode(1)
30+
p = p.next
31+
return head
32+
33+
34+
def getLength(self, l):
35+
tmp = 0
36+
while(l):
37+
tmp += 1
38+
l = l.next
39+
return tmp

0009.回文数/0009-回文数 2.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution(object):
2+
def isPalindrome(self, x):
3+
"""
4+
:type x: int
5+
:rtype: bool
6+
"""
7+
#2019.6.1
8+
xx = x
9+
if x < 0:
10+
return False
11+
12+
reverse = 0
13+
while x > 0:
14+
x, tmp = divmod(x, 10)
15+
reverse = reverse * 10 + tmp
16+
17+
return reverse == xx
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Definition for singly-linked list.
2+
# class ListNode:
3+
# def __init__(self, val=0, next=None):
4+
# self.val = val
5+
# self.next = next
6+
class Solution:
7+
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
8+
l = 0
9+
p = head
10+
while p:
11+
l += 1
12+
p = p.next
13+
14+
count = l - n + 1
15+
16+
dummy = ListNode(-1)
17+
dummy.next = head
18+
cur = -1
19+
p = dummy
20+
while p:
21+
cur += 1
22+
if cur == count - 1:
23+
node_to_be_deleted = p.next
24+
p.next = node_to_be_deleted.next
25+
break
26+
p = p.next
27+
28+
return dummy.next
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution(object):
2+
def isValid(self, s):
3+
"""
4+
:type s: str
5+
:rtype: bool
6+
"""
7+
dic = {")": "(", "]":"[", "}":"{"}
8+
stack = []
9+
for ch in s:
10+
if ch in ["(", "[", "{"]:
11+
stack.append(ch)
12+
else:
13+
if not stack or dic[ch] != stack[-1]:
14+
return False
15+
stack.pop()
16+
return len(stack) == 0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Definition for singly-linked list.
2+
# class ListNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.next = None
6+
7+
class Solution(object):
8+
def mergeTwoLists(self, l1, l2):
9+
"""
10+
:type l1: ListNode
11+
:type l2: ListNode
12+
:rtype: ListNode
13+
"""
14+
dummy = ListNode(-1)
15+
16+
p = dummy
17+
18+
while l1 and l2:
19+
if l1.val <= l2.val:
20+
p.next = ListNode(l1.val)
21+
l1 = l1.next
22+
else:
23+
p.next = ListNode(l2.val)
24+
l2 = l2.next
25+
p = p.next
26+
27+
if l1:
28+
p.next = l1
29+
30+
if l2:
31+
p.next = l2
32+
33+
return dummy.next
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution(object):
2+
def generateParenthesis(self, n):
3+
"""
4+
:type n: int
5+
:rtype: List[str]
6+
"""
7+
8+
res = []
9+
10+
def dfs(tmp, left, right):
11+
if len(tmp) == 2 * n:
12+
res.append(tmp)
13+
14+
if left:
15+
dfs(tmp + "(", left - 1, right)
16+
if right > left:
17+
dfs(tmp + ")", left, right - 1)
18+
19+
20+
dfs("", n, n)
21+
return res
22+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Definition for singly-linked list.
2+
# class ListNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.next = None
6+
7+
class Solution(object):
8+
def swapPairs(self, head):
9+
"""
10+
:type head: ListNode
11+
:rtype: ListNode
12+
"""
13+
if not head or not head.next:
14+
return head
15+
dummy = ListNode(1)
16+
dummy.next = head
17+
18+
first = head
19+
second = head.next
20+
21+
tail = second.next
22+
first.next = self.swapPairs(tail)
23+
second.next = first
24+
dummy.next = second
25+
26+
return dummy.next
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def removeDuplicates(self, nums: List[int]) -> int:
3+
visited = set()
4+
index = 0
5+
for num in nums:
6+
if num not in visited:
7+
visited.add(num)
8+
nums[index] = num
9+
index += 1
10+
return index
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution(object):
2+
def removeElement(self, nums, val):
3+
"""
4+
:type nums: List[int]
5+
:type val: int
6+
:rtype: int
7+
"""
8+
nums.sort()
9+
for i, num in enumerate(nums):
10+
if num == val:
11+
j = i + 1
12+
while(j < len(nums) and nums[j] == num):
13+
j += 1
14+
t = j
15+
while(j < len(nums)):
16+
nums[i] = nums[j]
17+
i += 1
18+
j += 1
19+
return i
20+
21+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class Solution:
2+
def strStr(self, haystack: str, needle: str) -> int:
3+
if needle not in haystack:
4+
return -1
5+
return haystack.index(needle)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
class Solution(object):
2+
def searchRange(self, nums, target):
3+
"""
4+
:type nums: List[int]
5+
:type target: int
6+
:rtype: List[int]
7+
"""
8+
lo, hi = 0, len(nums) - 1
9+
10+
while lo <= hi:
11+
12+
mid = (lo + hi) // 2
13+
# print lo, hi, mid, nums
14+
if nums[mid] == target:
15+
break
16+
elif nums[mid] < target:
17+
lo = mid + 1
18+
else:
19+
hi = mid - 1
20+
21+
if lo > hi:
22+
return [-1, -1]
23+
midposition = mid
24+
leftside, rightside = midposition, midposition
25+
#ÕÒ×ó±ß½ç
26+
# print 1
27+
lo, hi = 0, midposition
28+
while lo <= hi:
29+
# print lo, hi, mid
30+
mid = (lo + hi) // 2
31+
if nums[mid] < target:
32+
lo = mid + 1
33+
elif nums[mid] == target:
34+
if mid == 0 or (mid - 1 >= 0 and nums[mid - 1] < target):
35+
leftside = mid
36+
break
37+
else:
38+
hi = mid - 1
39+
# print 1
40+
#ÕÒÓұ߽ç
41+
lo, hi = midposition, len(nums) - 1
42+
while lo <= hi:
43+
mid = (lo + hi) // 2
44+
if nums[mid] > target:
45+
hi = mid - 1
46+
elif nums[mid] == target:
47+
if mid == len(nums) - 1 or (mid + 1 < len(nums) and nums[mid + 1] > target):
48+
rightside = mid
49+
break
50+
else:
51+
lo = mid + 1
52+
53+
return [leftside, rightside]
54+
55+
56+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution(object):
2+
def searchInsert(self, nums, target):
3+
"""
4+
:type nums: List[int]
5+
:type target: int
6+
:rtype: int
7+
"""
8+
left, right = 0, len(nums) - 1
9+
while left <= right:
10+
mid = (left + right) // 2
11+
12+
if nums[mid] == target:
13+
return mid
14+
elif nums[mid] > target:
15+
right = mid - 1
16+
elif nums[mid] < target:
17+
left = mid + 1
18+
return left
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def isValidSudoku(self, board: List[List[str]]) -> bool:
3+
row = defaultdict(set)
4+
col = defaultdict(set)
5+
square = defaultdict(set)
6+
for i in range(9):
7+
for j in range(9):
8+
if board[i][j].isdigit():
9+
if board[i][j] in row[i] or board[i][j] in col[j] or board[i][j] in square[(i // 3, j // 3)]:
10+
return False
11+
else:
12+
row[i].add(board[i][j])
13+
col[j].add(board[i][j])
14+
square[(i // 3, j // 3)].add(board[i][j])
15+
return True
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def jump(self, nums: List[int]) -> int:
3+
dp = [float("inf") for _ in nums]
4+
dp[0] = 0
5+
for i, num in enumerate(nums):
6+
for j in range(1, 1 + num):
7+
if i + j < len(nums):
8+
dp[i + j] = min(dp[i + j], dp[i] + 1)
9+
return dp[-1]

0046.全排列/0046-全排列 2.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution(object):
2+
def permute(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: List[List[int]]
6+
"""
7+
res = []
8+
def dfs(tmp, nums):
9+
if not nums:
10+
res.append(tmp)
11+
12+
for i, x in enumerate(nums):
13+
dfs(tmp + [x], nums[:i] + nums[i + 1:])
14+
15+
dfs([], nums)
16+
return res
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution(object):
2+
def rotate(self, matrix):
3+
"""
4+
:type matrix: List[List[int]]
5+
:rtype: None Do not return anything, modify matrix in-place instead.
6+
"""
7+
#ÏÈתÖÃÔÙ×óÓҶԳƷ­×ª
8+
if not matrix or not matrix[0]:
9+
return matrix
10+
n = len(matrix)
11+
12+
for i in range(n):
13+
for j in range(i + 1, n):
14+
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
15+
16+
for row in matrix:
17+
for i in range(n // 2):
18+
row[i], row[n - 1 - i] = row[n - 1 - i], row[i]
19+
20+
return matrix

0 commit comments

Comments
 (0)