博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[剑指offer by Python]二维数组中的查找
阅读量:3931 次
发布时间:2019-05-23

本文共 1671 字,大约阅读时间需要 5 分钟。

题目描述

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

主要思路:首先选取右上角的数字,如果该数字大于target,则该列全大于target,删除该列;如果该数字小于小于target,则该列全小于target,删除该行。      从右上角元素开始,当没到左下角元素前,不断判断右上角元素和target的关系,可以不断缩小查找范围。

 

1 # -*- coding:utf-8 -*- 2 class Solution: 3     # array 二维列表 4     def insert2dArray(self, seq, row, col): 5         # 没有使用numpy的array 6         # array = [[0] * col] * row 这种方式是浅拷贝,不好用 7         array = [[0 for i in range(col)] for i in range(row)] 8         for i in range(row): 9             for j in range(col):10                 array[i][j] = seq[i * row + j]11         return array12 13     def Find(self, target, array):14         # 主要思路:首先选取右上角的数字,如果该数字大于target,则该列全大于target,删除该列;15         # 如果该数字小于小于target,则该列全小于target,删除该行。16         found = False17         row = len(array)18         if row:19             col = len(array[0])20         else:21             col = 022 23         if row > 0 and col > 0:24             # find index of top right-hand corner25             i = 026             j = col - 127             # if never meets lower-left corner28             while i < row and j >= 0:29                 if array[i][j] == target:30                     found = True31                     # forget break32                     break33                 elif array[i][j] > target:34                     j -= 135                 elif array[i][j] < target:36                     i += 137         return found38 39 if __name__ == '__main__':40     answer = Solution()41     seq = [1, 2, 8, 9, 2, 4, 9, 12, 4, 7, 10, 13, 6, 8, 11, 15]42     matrix = answer.insert2dArray(seq, 4, 4)43     print(matrix)44     print(answer.Find(7, matrix))

 

转载地址:http://gytgn.baihongyu.com/

你可能感兴趣的文章
吴恩达深度学习 | (16) 卷积神经网络专项课程第一周学习笔记
查看>>
LaTex论文排版 | (20) LaTex首行缩进
查看>>
吴恩达深度学习 | (24) 序列模型专项第二周学习笔记
查看>>
深度学习 | (2) 二分类、多分类与多标签分类的区别与损失函数
查看>>
LaTex论文排版 | (21) 图表caption居中显示
查看>>
深度学习 | (4) 分类问题的Label为啥是one-hot?
查看>>
LaTex论文排版 | (22) argmax、argmin下标使用方法及任意、存在符号
查看>>
深度学习 | (5) 2分类、多分类问题评价指标以及在sklearn中的使用
查看>>
机器阅读理解 | (2) 文本问答概述
查看>>
预训练语言模型 | (1) 概述
查看>>
预训练语言模型 | (2) transformer
查看>>
预训练语言模型 | (3) Bert
查看>>
预训练语言模型 | (4) AlBert
查看>>
预训练语言模型 | (5) StructBert和RoBerta
查看>>
GNN在文本分类上的应用 | (1) TextGCN
查看>>
图神经网络 | (7) 如何理解Graph Convolutional Network(GCN)
查看>>
GNN在文本分类上的应用 | (2) Text Level Graph Neural Network for Text Classification
查看>>
GNN在文本分类上的应用 | (3) TensorGCN
查看>>
SemEval2019Task3_ERC | (1) Affect Classification in Dialogue using Attentive BiLSTMs
查看>>
SemEval2019Task3_ERC | (2) Attentive Conversation Modeling for Emotion Detection and Classification
查看>>