This commit is contained in:
nik
2025-10-01 22:55:09 +03:00
parent 4d0ece634b
commit 74e98c37c4
591 changed files with 20286 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
def exist(board, word):
rows, cols = len(board), len(board[0])
visited = set()
def dfs(r, c, k):
if k == len(word):
return True
if (
r < 0
or r >= rows
or c < 0
or c >= cols
or (r, c) in visited
or board[r][c] != word[k]
):
return False
visited.add((r, c))
ok = (
dfs(r + 1, c, k + 1)
or dfs(r - 1, c, k + 1)
or dfs(r, c + 1, k + 1)
or dfs(r, c - 1, k + 1)
)
visited.remove((r, c))
return ok
for r in range(rows):
for c in range(cols):
if dfs(r, c, 0):
return True
return False
if __name__ == "__main__":
board = [["A", "B", "C", "E"], ["S", "F", "C", "S"], ["A", "D", "E", "E"]]
print(exist(board, "ABCCED"))
print(exist(board, "SEE"))
print(exist(board, "ABCB"))

View File

@@ -0,0 +1,22 @@
def search_rotated(nums, target):
l, r = 0, len(nums) - 1
while l <= r:
m = (l + r) // 2
if nums[m] == target:
return m
if nums[m] >= nums[l]:
if nums[l] <= target < nums[m]:
r = m - 1
else:
l = m + 1
else:
if nums[m] < target <= nums[r]:
l = m + 1
else:
r = m - 1
return -1
if __name__ == "__main__":
print(search_rotated([4, 5, 6, 7, 0, 1, 2], 0))
print(search_rotated([4, 5, 6, 7, 0, 1, 2], 3))

View File

@@ -0,0 +1,31 @@
def search_matrix(matrix, target):
if not matrix or not matrix[0]:
return False
top, bot = 0, len(matrix) - 1
while top <= bot:
mid = (top + bot) // 2
if matrix[mid][0] <= target <= matrix[mid][-1]:
row = mid
break
if target < matrix[mid][0]:
bot = mid - 1
else:
top = mid + 1
else:
return False
l, r = 0, len(matrix[row]) - 1
while l <= r:
m = (l + r) // 2
if matrix[row][m] == target:
return True
if matrix[row][m] < target:
l = m + 1
else:
r = m - 1
return False
if __name__ == "__main__":
matrix = [[1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 60]]
print(search_matrix(matrix, 3))
print(search_matrix(matrix, 13))