二维数组中的查找

题目描述

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

示例

输入

7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

输出

True

算法思想

  设 i ,j 分别表示二维数组的行下标和列下标。

  (1)当array[0][j] > target的时候,第 j 列一定全部大于 target,以此类推array[i][j];

  (2)在条件(1)的前提下,当array[i][j] < target 的时候,第 i 行中下标为 [ 0 ,......, j -1] 的元素一定都小于target

target = 7
array = [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

def judge():
  i = 0
  j = len(array[0])-1
  while i < len(array) and j>=0:
    if array[i][j]<target:
      i+=1
    elif array[i][j]>target:
      j-=1
    else:
      return True
  return False

原文地址:https://www.cnblogs.com/hanouba/p/13940315.html