二维数组中,每行从左到右递增,每列从上到下递增,给出一个数,判断它是否在数组中 从左下角(或右上角)开始遍历数组

it2023-02-10  57

刷题:剑指offer刷题

语言:Python

参考:GitHub地址

题目:

# 二维数组中,每行从左到右递增,每列从上到下递增,给出一个数,判断它是否在数组中 # 从左下角(或右上角)开始遍历数组

答案:

# coding=utf-8 # 二维数组中,每行从左到右递增,每列从上到下递增,给出一个数,判断它是否在数组中 # 从左下角(或右上角)开始遍历数组 def find_integer(matrix, num): """ :param matrix: [[]] :param num: int :return: bool """ if not matrix: return False rows, cols = len(matrix), len(matrix[0]) row, col = rows - 1, 0 while row >= 0 and col <= cols - 1: if matrix[row][col] == num: return True elif matrix[row][col] > num: row -= 1 else: col += 1 return False if __name__ == '__main__': matrix = [[1, 2, 3], [2, 3, 6], [3, 6, 7]] num = 6 print find_integer(matrix, num)

基于以上答案结合之前学习给出另一种答案:

# -*- coding: utf-8 -*- def find_integer(matrix, num): """ 二维数组中,每行从左到右递增,每列从上到下递增,给出一个数,判断它是否在数组中 从左下角(或右上角)开始遍历数组 :param matrix: 二维列表[[]] :param num: int :return: bool """ # 简单判断参数是否传入 if not all([matrix, num]): return False # 申请一个空列表接收二维列表 a_list = list() # 将二维数组转换为一维列表 for i in range(len(matrix)): a_list.extend(matrix[i]) # 使用集合去重 a_list = set(a_list) # 判断传入int if num in a_list: return True return False if __name__ == '__main__': matrix = [[1, 2, 3], [2, 3, 6], [3, 6, 7]] num = 4 print(find_integer(matrix, num))

 

 

最新回复(0)