博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[算法题] 二维数组中的查找
阅读量:5077 次
发布时间:2019-06-12

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

题目内容

题目来源:剑指offer、LeetCode

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

  • Integers in each row are sorted from left to right.
  • The first integer of each row is greater than the last integer of the previous row.

题目思路

这个题目最直接的想法就是从左上角开始看,假设要查找的数是大于左上角的数字,那么要查找的数必然在该数字的右边或者下边。那么问题来了,右边或者下边就意味着右下角的矩形部分是重复的,这就给编程带来了难度。

因此经过仔细观察,发现本题可以用如下方式规避上述问题。从右上角或者左下角入手进行比较。以左下角为例,假如该数字大于左下角的数,那么左下角数所在的这一列都可以被排除了,假如该数字小于左下角的数,那么左下角的数所在的这一行就可以都被排除了。通过这样的方法,一次就可以排除一行或者一列,大大降低了难度。不会出现重叠的情况了。

这种题目就是比较巧妙,学习经验。

Python代码

# -*- coding:utf-8 -*-class Solution:    # array 二维列表    def Find(self, target, array):        # write code here        if not array or not target:            return        row=len(array)        col=len(array[0])        if row==1 and col==0:            return False        i=row-1        j=0        while j=0:            if target>array[i][j]:                j+=1            elif target

 

 

 

转载于:https://www.cnblogs.com/chengyuanqi/p/7263566.html

你可能感兴趣的文章
火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题...
查看>>
深入理解JVM读书笔记--字节码执行引擎
查看>>
vue-搜索功能-实时监听搜索框的输入,N毫秒请求一次数据
查看>>
批处理 windows 服务的安装与卸载
查看>>
React文档翻译 (快速入门)
查看>>
nodejs fs路径
查看>>
动态规划算法之最大子段和
查看>>
linux c:关联变量的双for循环
查看>>
深入浅出理解zend framework(三)
查看>>
python语句----->if语句,while语句,for循环
查看>>
javascript之数组操作
查看>>
LinkedList源码分析
查看>>
TF-IDF原理
查看>>
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>
一步步教你学会browserify
查看>>
Jmeter入门实例
查看>>
亲近用户—回归本质
查看>>
中文脏话识别的解决方案
查看>>
CSS之不常用但重要的样式总结
查看>>