二维数组的查找——剑指offer第一题

题目描述:

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

设计思路:

  1. 遍历所有行
  2. 遍历行中的每个元素
  3. 判断元素值是否与给定的target值相等
  4. 相等返回True
  5. 判断元素是否大于给定target值(比target值大的话跳出循环)
  6. 遍历完没有返回false

代码:

 1 import numpy as np
 2 class Solution:
 3     # array 二维列表
 4     def Find(self, target, array):
 5         len_line= len(array)
 6         len_colum = len(array[0])
 7         #遍历每一行
 8         for i in range(len_line):
 9             for j in range(len_colum):
10                 if array[i][j] == target:
11                     return True
12                 elif array[i][j] >target:break
13         return False
14
15 list = [[1,2,3],[4,5,6],[7,8,9]]
16 array = np.array(list)
17 target = int(input())
18 s = Solution()
19 judge = s.Find(target,array)
20 print(judge)

卡住的问题点:

久久无法解决二维数组的键盘输入问题

解决:

原文地址:https://www.cnblogs.com/carol-main-blog/p/11516681.html

时间: 2024-10-10 13:22:26

二维数组的查找——剑指offer第一题的相关文章

剑指 offer 第一题: 二维数组中的查找

打算写 图解剑指 offer 66 题 的系列文章,不知道大家有没有兴趣 ?? 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 题目分析 图 1 如果没有头绪的话,很显然使用 暴力解法 是完全可以解决该问题的. 即遍历二维数组中的每一个元素,时间复杂度:O(n^2). 其实到这里我们就可以发现,使用这种暴力解法并没有充分利用题目给出的信息.这

剑指offer第一题:二维数组中的查找

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 菜鸡解法...O(nlogm) 1 public class Solution { 2 public boolean Find(int target, int [][] array) { 3 int row = array.length;//二维数组行数 4 int col = array[0].l

【剑指Offer第一题】二维数组的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 注:设二维数组为m行n列.语言:C++ 解法1:顺序查找 bool Find(int target, vector<vector<int> > array) { vector<vector<int> >::iterator i; vector<int&g

剑指offer第一题:二维数组的查找(python)

题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 应当从数组的左下角或右上角开始判断,以左下角为例,若整数小于左下角数值,则最后一行不用考虑.若整数大于左下角数值,则第一列不用考虑.不断缩小范围. 1 # -*- coding:utf-8 -*- 2 class Solution: 3 # array 二维列表 4 def Find(

面试题03_二维数组中查找_剑指offer系列

题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 解题思路: 这是一道考查二维数组的理解和编程能力的题. 在二维数组在内存中是连续存储的.在内存中从上到下存储各行元素,在同一行中按照从左到右存储. 因此可以按照行号和列号来计算出相对数组首部的位置. 由于每一行 和 每一列都是有序的,因此,我们可以拿要查找的数与数组的右上角的数进行比较. 因为每一行从左到右递增,每一列

剑指offer:二维数组的查找

题目:二维数组的查找 思路: 由于二维数组是从左到右,从上到下是递增的,所以可以从右上角或者左下角开始选择, 比如从右上角开始, 右上角的值都比目标值大的话,而右上角所在列的值都比右上角的值大,则所在列排除. 右上角的值都比目标值小的话,而右上角所在行的值都比右上角的值小,则所在行排除. 以此类推,查找会以行或者列的范围进行缩小.直到得到与目标值相同的值或者没有相同值. 图解: 而右上角所在列的值都比目标值大,则排除所在列. 有 图解: 代码: class Solution { public b

ACM_二维数组的查找

二维数组的查找 Time Limit: 2000/1000ms (Java/Others) Problem Description: 给定一个n*m的二维数组,保证a[i][j] < a[i+1][j],a[i][j]< a[i][j+1](其中0≤i< n-1,0≤j< m-1); 接下来有q个询问,每个询问包含一个数字num,查找num是否包含在该二维数组里面. Input: 输入包含多组测试数据,对于每组数据,首先输入两个整数n,m,(1≤n,m≤1000).接下来输入n*m

剑指offer链表题的双指针法总结

本篇博客旨在总结双指针法在剑指offer链表题中的应用 包括删除链表中重复的节点.链表中倒数第k个节点.链表中环的入口节点.反转链表.合并两个排序的链表.两个链表的第一个公共节点. 根据双指针的类型,可以大致分为三种: 第一种是间隔一定距离的双指针法,包括删除链表中重复的节点.链表中倒数第k个节点两题 删除链表中重复的节点 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5

剑指offer刷题—二维数组的查找

最近接触到一本书叫做剑指offer,在这里准备在这个2个月左右将这本书刷完,当然,不需要每天多少道什么的,不在多,一天理解一道就好了,希望能成为一种习惯,另外,准备在github上也进行同步分享. 今天第一道题: 面试题3:二位数组中的查找 当我们需要解决一个复杂问题时,一个很有效的方法就是从具体的问题出手,通过分析具体的例子,得到规律. 再一个二维数组中,每一行都要按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排列.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含