刷题 day5

1.矩阵搜索(1)

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

  • 每行中的整数从左到右按升序排列。
  • 每行中的整数从左到右按升序排列。

思路:
矩阵中的元素的全部按照顺序排列的,所以如果展成排序的列表,使用二分查找即可。
其中:
row = idx // n
clo = idx % n

def search_matrix(matrix,target):
	m = len(matrix)
	if m == 0return 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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值