题目】 给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一 列都是排好序的。实现一个函数,判断K 是否在matrix中。 例如: 0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 如果K为7, 返回true;  如果K为6,返 回false。
要求】 时间复杂度为O(N+M),额外空间复杂度为O(1)

思路:

1、从右上角的数开始寻找(row=0 col=M-1),比较当前数matrix[row][col]和k的关系

2、如果等于k,返回true表示已经找到

如果比k大,因为矩阵每一列都是排好序,所以在当前数所在的列中,处于当前数下方的数都比k大,则没有必要继续在第col列上寻找,令col = col- 1,重复步骤

如果比k小,因为矩阵每一列都是排好序,所以在当前数所在的行中,处于当前数左方的数都比k小,则没有必要继续在第row行上寻找,令row = row + 1,重复步骤

3、如果找到越界都没有发现与K相等的数,则返回false

def isContain(matrix,k):row = 0col = len(matrix[0])-1while row < len(matrix) and col > -1:if matrix[row][col] == k:return Trueelif matrix[row][col] > k:col -=1else:row +=1return FalseisContain([[0,1,2,5],[2,3,4,7],[4,4,4,8],[5,7,7,9]],7)

在行列都排好序的矩阵中找数相关推荐

  1. 算法练习day9——190327(“之” 字形打印矩阵、在行列都排好序的矩阵中找数、打印两个有序链表的公共部分、判断一个链表是否为回文结构)

    1."之" 字形打印矩阵 [题目] 给定一个矩阵matrix, 按照"之" 字形的方式打印这个矩阵, 例如: 1 2 3 4 5 6 7 8 9 10 11 1 ...

  2. 《程序员代码面试指南》第八章 数组和矩阵问题 在行列都排好序的矩阵中找数...

    题目 在行列都排好序的矩阵中找数 java代码 package com.lizhouwei;/*** @Description: 在行列都排好序的矩阵中找数* @Author: lizhouwei* ...

  3. 数据结构与算法之“之”字型打印矩阵和矩阵中找数

    数据结构与算法之"之"字型打印矩阵和矩阵中找数 目录 "之"字型打印矩阵 在行列都排好序的矩阵中找数 1. "之"字型打印矩阵 题目描述 思 ...

  4. C语言,往排好序的数组中插入元素

    例题:有一个已经排好序的数组,元素分别是:1,3,5,7,9,从键盘上输入一个元素,将这个元素插入到数组中,使数组仍保持从小到大排序. 输出时各元素的最小宽度为5. 例: (1)输入:0  输出:   ...

  5. 题目标题: 插队(在一个排好序的数组中插入一个数)

    题目描述: 编写程序,对一个已经排好序的数组,输入一个元素.将该元素按原来的排序规则将它插入到数组中.例如原数组为:1 2 6 7 9,输入待插入的元素3,则插入完成后结果为: 1 2 3 6 7 9 ...

  6. 排好序的数组中,找出两数之和为m的所有组合

    public static void main(String[] args) {int[] a = {1,2,2,3,3,4,5,6};int m = 6;normal(a, m);}//正确思路 p ...

  7. C语言将一个数插入到已排好序的数组中

    #include<stdio.h> #define N 5 int main(){void fun(int *,int);int a[N+1],n,i;printf("请输入%d ...

  8. C语言在一个排好序的数组中插入一个数,按序输出。

    #include<stdio.h> void main() { int a[4]={1,4,7}; int t,y; printf("以前数组为"); for(int  ...

  9. 查找两个已经排好序的数组的第k大的元素

    http://www.cnblogs.com/buptLizer/archive/2012/03/31/2427579.html 给出两个排好序的数组 ,不妨设为a,b都按升序排列,及k的值,求出第k ...

最新文章

  1. linux03:系统常用的命令
  2. 多平台数据库客户端工具DBeaver
  3. js中获取事件对象的方法小结
  4. 【python】-socketServer
  5. linux执行python不打印_在Python中执行shell程序而不打印到屏幕
  6. 在mac OSX中安装启动zookeeper
  7. qchart能绘制三维_通图GIS | 用多种体展示方案适配复杂三维场景分析、表达
  8. sql 触发器未触发_SQL触发器–综合指南
  9. 音频脉冲c语言程序,基于单片机的音乐发声器的设计(完整版,含程序和电路图).doc...
  10. 深入理解JVM虚拟机读书笔记——垃圾回收器
  11. 华为盒子 原生android,手把手教你刷机把华为悦盒刷机为安卓网络机顶
  12. 考研:研究生考试(五天学完)之《线性代数与空间解析几何》研究生学霸重点知识点总结之目录(矩阵及其运算、向量与向量空间、欧氏空间、线性方程组、特征值/特征向量及相似矩阵、二次型、线性空间与线性变换)
  13. js判断浏览器是否搜狗浏览器
  14. exlc表格怎么换行_excel表格怎么换行_excel表格怎么换行上下换行
  15. SpringBoot 系列教程(七十七):SpringBoot整合ehcache缓存
  16. 彻底卸载mac软件的方法,这样才删除干净哦
  17. (附源码)springboot图书管理系统 毕业设计 160934
  18. learining user's intrinsic and extrinsic interests for point of interest recommendation IJCAI17
  19. jmeter正则表达式提取器的用法和正则
  20. 乔布斯《遗失的访谈》整理

热门文章

  1. Bash Cookbook 学习笔记 【高级】
  2. codeforces 665B Shopping
  3. 【Android】17.2 Activity与Local Service的绑定
  4. 遭遇内存无法读写的错误
  5. 快速入门cocos2d-x jsbinding
  6. Prism学习笔记(三):对Prism中模块化程序的理解。
  7. 在Windows下安装chromedriver
  8. 台湾国立大学郭彦甫Matlab教程笔记(21)linear equations(高斯消去法和追赶法)
  9. 《如何像证券交易员一样思考和行动》_学习笔记
  10. java线程同步barrier_Java多线程同步工具类之CyclicBarrier