《剑指offer》Python语言 面试题3:二维数组中的查找

来源:互联网 发布:微信模板消息 java 编辑:程序博客网 时间:2024/05/18 18:53

    写在开头的话:

    当想写这个的时候,发现已经有人做了这个工作了,详情请见Python基础算法/剑指offer,然而依然决定自己写下这个系列,作为算法部分的巩固和提高。在自己写完后会借鉴Python基础算法/剑指offer的代码,如有部分重复,还请见谅。

# -*- coding: UTF-8 -*-.'''在一个二维数组中,每一行都按照从左到右严格递增的顺序排序每一列都按照从上到下严格递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。''''''查找方式从右上角开始查找如果当前元素大于target, 左移一位继续查找如果当前元素小于target, 下移一位继续查找'''def solve(matrix, findNumber):'Function to solve problem.'if not isinstance(matrix, list):print "invalid list"returnelif not matrix:print "empty list"returnif not isinstance(findNumber, int):print "invalid int"returnflagFind = Falserow, column = len(matrix), len(matrix[0])x, y = 0, column - 1while((x < row) & (y >= 0)):if matrix[x][y] == findNumber:flagFind = Truebreakelif matrix[x][y] < findNumber:x += 1elif matrix[x][y] > findNumber:y -= 1if flagFind:print 'find the number %d, first in row %d, column %d.' % (findNumber, x, y)else:print "can't find the number %d." % findNumberdef test():'Test the program.'matrix = [[1, 2, 8, 9], [2, 4, 9, 12], [4, 7, 10, 13], [6, 8, 11, 15]]findNumber = 7solve(matrix, findNumber)# find the number 7, in row 2, column 1matrix = [[1, 2, 8, 9], [2, 4, 9, 12], [4, 7, 10, 13], [6, 8, 11, 15]]findNumber = 5solve(matrix, findNumber)# can't find the number 5matrix = 3findNumber = 4solve(matrix, findNumber)# invalid list# def input():# 'Input by hand'# # 输入单个数字# x = int(raw_input())# # 输入两个数字# [n, m] = map(int, raw_input().strip().split(' '))# # 输入一串数字# a = map(int, raw_input().strip().split(' '))# # 输入字符串# b = list(raw_input())# solve(x, n, m, a, b)if __name__ == "__main__":#input()test()


原创粉丝点击