1.矩阵搜索(1)
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行中的整数从左到右按升序排列。
思路:
矩阵中的元素的全部按照顺序排列的,所以如果展成排序的列表,使用二分查找即可。
其中:
row = idx // n
clo = idx % n
def search_matrix(matrix,target):
m = len(matrix)
if m == 0:
return False
n = len(matrix[0])
left,right = 0,m*n-1
while left <= right:
mid_idx = (left+right) // 2
mid_ele = matrix[mid_idx//n][mid_idx%n]
if target == mid_ele:
return True
elif target < mid_ele:
right = mid_idx -1
else:
left = mid_idx + 1
return False
2. 矩阵搜索(2)
在一个mxn的矩阵中,每一行,每一列都是排好序的,设计一个算法再矩阵中查找某个数。
行和列是有序的,那么就存在两个特殊数,左下角和右上角,只需要和target比较一次就能排除一列或者一行。
def merge(matrix,target):
i,j = len(matrix)-1,0
while i >= 0 and j < len(matrix[0])
if matrix[i][j] > target:
i -= 1
elif matrix[i][j] < target:
j += 1
else:
return True
return False
3. 替代空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
def replace_block(s):
return "".join((%20 if i ==" " else i for i in s))