返回
Python 语言轻松搞定 LeetCode 74:在二维矩阵中寻找目标值
后端
2023-11-22 22:59:20
导言
在计算机科学中,搜索算法是查找数据结构中特定元素或一组元素的算法。搜索算法可以分为两类:顺序搜索和二分搜索。
顺序搜索是最简单的一种搜索算法。它从数据结构的第一个元素开始,依次检查每个元素,直到找到目标元素或到达数据结构的末尾。
二分搜索是一种更快的搜索算法。它适用于已排序的数据结构。二分搜索算法首先将数据结构的中间元素与目标元素进行比较。如果中间元素等于目标元素,则搜索结束。如果中间元素小于目标元素,则搜索继续在数据结构的上半部分进行。如果中间元素大于目标元素,则搜索继续在数据结构的下半部分进行。
在本文中,我们将使用 Python 语言来实现这两种搜索算法。
Python 实现
def binary_search(arr, target):
"""
二分搜索算法
参数:
arr:已排序的列表
target:要查找的目标值
返回值:
如果找到目标值,返回其索引。否则,返回 -1。
"""
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
def暴力求解(arr, target):
"""
暴力求解算法
参数:
arr:列表
target:要查找的目标值
返回值:
如果找到目标值,返回其索引。否则,返回 -1。
"""
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
if __name__ == "__main__":
# 测试数据
arr = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
target = 11
# 使用二分搜索算法查找目标值
result = binary_search(arr, target)
# 如果找到目标值,打印其索引
if result != -1:
print("找到目标值 {},索引为 {}。".format(target, result))
else:
print("未找到目标值 {}。".format(target))
# 使用暴力求解算法查找目标值
result = 暴力求解(arr, target)
# 如果找到目标值,打印其索引
if result != -1:
print("找到目标值 {},索引为 {}。".format(target, result))
else:
print("未找到目标值 {}。".format(target))
结语
这篇文章介绍了两种在 Python 中查找二维矩阵中目标值的方法:二分搜索和暴力求解。二分搜索适用于已排序的矩阵,而暴力求解适用于任何矩阵。这两种方法各有优缺点,您可以根据自己的需要选择合适的方法。