在行列都排好序的矩阵中找数
题目】 给定一个有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)
在行列都排好序的矩阵中找数相关推荐
- 算法练习day9——190327(“之” 字形打印矩阵、在行列都排好序的矩阵中找数、打印两个有序链表的公共部分、判断一个链表是否为回文结构)
1."之" 字形打印矩阵 [题目] 给定一个矩阵matrix, 按照"之" 字形的方式打印这个矩阵, 例如: 1 2 3 4 5 6 7 8 9 10 11 1 ...
- 《程序员代码面试指南》第八章 数组和矩阵问题 在行列都排好序的矩阵中找数...
题目 在行列都排好序的矩阵中找数 java代码 package com.lizhouwei;/*** @Description: 在行列都排好序的矩阵中找数* @Author: lizhouwei* ...
- 数据结构与算法之“之”字型打印矩阵和矩阵中找数
数据结构与算法之"之"字型打印矩阵和矩阵中找数 目录 "之"字型打印矩阵 在行列都排好序的矩阵中找数 1. "之"字型打印矩阵 题目描述 思 ...
- C语言,往排好序的数组中插入元素
例题:有一个已经排好序的数组,元素分别是:1,3,5,7,9,从键盘上输入一个元素,将这个元素插入到数组中,使数组仍保持从小到大排序. 输出时各元素的最小宽度为5. 例: (1)输入:0 输出: ...
- 题目标题: 插队(在一个排好序的数组中插入一个数)
题目描述: 编写程序,对一个已经排好序的数组,输入一个元素.将该元素按原来的排序规则将它插入到数组中.例如原数组为:1 2 6 7 9,输入待插入的元素3,则插入完成后结果为: 1 2 3 6 7 9 ...
- 排好序的数组中,找出两数之和为m的所有组合
public static void main(String[] args) {int[] a = {1,2,2,3,3,4,5,6};int m = 6;normal(a, m);}//正确思路 p ...
- C语言将一个数插入到已排好序的数组中
#include<stdio.h> #define N 5 int main(){void fun(int *,int);int a[N+1],n,i;printf("请输入%d ...
- C语言在一个排好序的数组中插入一个数,按序输出。
#include<stdio.h> void main() { int a[4]={1,4,7}; int t,y; printf("以前数组为"); for(int ...
- 查找两个已经排好序的数组的第k大的元素
http://www.cnblogs.com/buptLizer/archive/2012/03/31/2427579.html 给出两个排好序的数组 ,不妨设为a,b都按升序排列,及k的值,求出第k ...
最新文章
- linux03:系统常用的命令
- 多平台数据库客户端工具DBeaver
- js中获取事件对象的方法小结
- 【python】-socketServer
- linux执行python不打印_在Python中执行shell程序而不打印到屏幕
- 在mac OSX中安装启动zookeeper
- qchart能绘制三维_通图GIS | 用多种体展示方案适配复杂三维场景分析、表达
- sql 触发器未触发_SQL触发器–综合指南
- 音频脉冲c语言程序,基于单片机的音乐发声器的设计(完整版,含程序和电路图).doc...
- 深入理解JVM虚拟机读书笔记——垃圾回收器
- 华为盒子 原生android,手把手教你刷机把华为悦盒刷机为安卓网络机顶
- 考研:研究生考试(五天学完)之《线性代数与空间解析几何》研究生学霸重点知识点总结之目录(矩阵及其运算、向量与向量空间、欧氏空间、线性方程组、特征值/特征向量及相似矩阵、二次型、线性空间与线性变换)
- js判断浏览器是否搜狗浏览器
- exlc表格怎么换行_excel表格怎么换行_excel表格怎么换行上下换行
- SpringBoot 系列教程(七十七):SpringBoot整合ehcache缓存
- 彻底卸载mac软件的方法,这样才删除干净哦
- (附源码)springboot图书管理系统 毕业设计 160934
- learining user's intrinsic and extrinsic interests for point of interest recommendation IJCAI17
- jmeter正则表达式提取器的用法和正则
- 乔布斯《遗失的访谈》整理
热门文章
- Bash Cookbook 学习笔记 【高级】
- codeforces 665B Shopping
- 【Android】17.2 Activity与Local Service的绑定
- 遭遇内存无法读写的错误
- 快速入门cocos2d-x jsbinding
- Prism学习笔记(三):对Prism中模块化程序的理解。
- 在Windows下安装chromedriver
- 台湾国立大学郭彦甫Matlab教程笔记(21)linear equations(高斯消去法和追赶法)
- 《如何像证券交易员一样思考和行动》_学习笔记
- java线程同步barrier_Java多线程同步工具类之CyclicBarrier