剑指offer之二维数组中的查找(Python)
2017-10-14 17:14
429 查看
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路1:利用数组的特点,从第一行开始,我们每次让数组的每行的最后一个和目标值进行比较。具体算法如下:
1、行序列 i 初始化为0,列序列 j 初始化为数组的列数;
2、写一个while循环判断: array[i][j] 和 target 的大小关系:
①array[i][j] < target, 说明这一行的数都比较目标值小,则意味着行序列需要增加;
②array[i][j] > target, 说明目标值可能就在这行,我们让列序列减小;
③array[i][j] = target, 那就说明找到了,返回True就好了
3、如果while循环都走完了,则只能说明这个数组中没有这个数,返回False
程序附上:
def function1(array,target): len_line = len(array) - 1 len_column = len(array[0]) - 1 i = 0 j = len_column while i <= len_line and j >= 0: if array[i][j] < target: i += 1 elif array[i][j] > target: j -= 1 else: return True return False
思路2:利用Python自身特点,直接用for遍历每一行,然后用if判断是否在该列中。
1、如果找到了,返回True
2、循环结束后都还没有,则返回False
代码附上:
def function2(array,target): for line in array: if target in line: return True else: continue return False
最后,附上测试总代码:
# -*- coding: utf-8 -*-
"""
Created on Sat Oct 14 16:09:00 2017
@author: gb_xiao
Mail: mingliumengshao@163.com
"""
"""
题目描述:在一个二维数组中,每一行都按
照从左到右递增的顺序排序,每一列都按照
从上到下递增的顺序排序。请完成一个函数,
输入这样的一个二维数组和一个整数,判断
数组中是否含有该整数。
"""
def function1(array,target): len_line = len(array) - 1 len_column = len(array[0]) - 1 i = 0 j = len_column while i <= len_line and j >= 0: if array[i][j] < target: i += 1 elif array[i][j] > target: j -= 1 else: return True return False
def function2(array,target): for line in array: if target in line: return True else: continue return False
def main():
array = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
target = 5
print function1(array,target)
print function2(array,target)
if __name__ == "__main__":
main()
相关文章推荐
- 《苦练算法》-剑指Offer- 一、 二维数组中的查找 -python编写
- python刷题日记:剑指offer-二维数组的查找
- 剑指offer 算法1 二维数组中的查找(python)
- 【剑指Offer】二维数组中的查找 解题报告(Java & Python)
- 剑指offer 二维数组中的查找
- 剑指offer面试题 二维数组的查找
- 剑指offer题解【二维数组中的查找】-java
- 剑指offer学习笔记【二维数组的查找】
- 【剑指offer——JAVA实现】二维数组中的查找
- 剑指Offer:二维数组中的查找
- 剑指offer-二维数组中的查找(1)
- 剑指offer——二维数组中的查找
- 剑指Offer:面试题3——二维数组中的查找(java实现)
- 剑指Offer学习之面试题3 :二维数组中的查找
- 剑指Offer-4:二维数组中的查找
- 剑指Offer-3-二维数组中的查找
- 剑指offer--二维数组的查找
- 剑指offer----二维数组中的查找的解析与实现
- 牛客网-剑指Offer-二维数组的查找
- 剑指offer 面试题3:二维数组中的查找