编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。

每行的第一个整数大于前一行的最后一个整数。

示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3

输出:true

示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13

输出:false

提示:m == matrix.length

n == matrix[i].length

1 <= m, n <= 100

-104 <= matrix[i][j], target <= 104

javascript 暴力解法/**

* @param {number[][]} matrix

* @param {number} target

* @return {boolean}

*/

var searchMatrix = function(matrix, target) {

for(let i=0;i

for(let j=0;j

if(matrix[i][j]===target){

return true

}

}

}

return false

};

javascript 数组查找/**

* @param {number[][]} matrix

* @param {number} target

* @return {boolean}

*/

/*

以二维数组左下角为原点,建立直角坐标轴。

若当前数字大于了查找数,查找往上移一位。

若当前数字小于了查找数,查找往右移一位。

*/

var searchMatrix = function(matrix, target) {

let x = matrix.length-1,y = 0

while(x>=0 && y

if(matrix[x][y]===target){

return true

}else if(matrix[x][y]>target){

x--

}else{

y++

}

}

return false

};

javascript 二分法/**

* @param {number[][]} matrix

* @param {number} target

* @return {boolean}

*/

var searchMatrix = function(matrix, target) {

let m = matrix.length,n=matrix[0].length

let low = 0,high = m*n-1

while(low<=high){

let mid = Math.floor((high-low)/2)+low //中位

let x = matrix[Math.floor(mid/n)][mid%n] //所在的值

if(x

low = mid+1

}else if(x>target){

high = mid-1

}else{

return true

}

}

return false

};

Typescript 以上两种也可以改为tsfunction searchMatrix(matrix: number[][], target: number): boolean {

let x: number = matrix.length - 1, y:number = 0

while (x >= 0 && y < matrix[0].length) {

if (matrix[x][y] === target) {

return true

} else if (matrix[x][y] > target) {

x--

} else {

y++

}

}

return false

};

python 暴力解法class Solution(object):

def searchMatrix(self, matrix, target):

for i in range(len(matrix)):

for j in range(len(matrix[0])):

if matrix[i][j]==target:

return True

return False

python any函数

any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE。

语法def any(iterable):

for element in iterable:

if element:

return True

return False

解法class Solution(object):

def searchMatrix(self, matrix, target):

return any(target in row for row in matrix)

Go 数组查找func searchMatrix(matrix [][]int, target int) bool {

m := len(matrix)

n := len(matrix[0])

var i = 0

for i < m && n > 0 {

if target == matrix[i][n-1] {

return true

} else if target < matrix[i][n-1] {

n--

} else {

i++

}

}

return false

}

第一次尝试用4种语言去解一道题目,继续加油!

c语言暴力求解法二维数组比较,【算法】搜索二维矩阵 暴力解法二分法 4种语言...相关推荐

  1. 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

    文章目录 一.抽象 二维数组 业务函数 1.二维数组 打印函数 2.二维数组 排序函数 二.完整代码示例 一.抽象 二维数组 业务函数 1.二维数组 打印函数 注意 , 二维数组 作为 函数参数 输入 ...

  2. c语言二维数组中的周边,【C语言】二维数组中的查找,杨氏矩阵

    //二维数组中的查找,杨氏矩阵 //在一个二维数组中,每行都依照从左到右的递增的顺序排序.每列都依照从上到下递增的顺序排序. //请完毕一个函数.输入这种一个数组和一个数,推断数组中是否包括这个数. ...

  3. C 二维数组,以及自定义二维数组

    C 二维数组,以及自定义二维数组 我们通常情况下是这样定义一个二维数组的: int a[10][15]; 我们分别查看一下a,a[0],*a 都是一样的值吧 我们可以这么理解: a是一个数组的数组 a ...

  4. java二维数组的创建,java二维数组创建方法

    java动态创建二维数组,从零学java笔录-第31篇 图解二位数组在内存中存储,java二维数组动态赋值,java二维数组创建方法 二维数组的定义 type arrayName[ ][ ]; typ ...

  5. java 二维数组位置_java 找到二维数组指定元素的位置

    这个是代码编译时没有问题运行出错.主要功能是首先将txt格式文本导入二维数组,然后在二维数组中查找指定元素的行号和列号.运行结果出错显示为:importjava.util.*;importjava.i ...

  6. a和a的区别、二维数组的本质及多维数组

    1 a和&a的区别 int a[10] = {1,2};//其他初始化为0 a代表数组首元素的地址,不是整个数组的地址 &a表示整个数组的地址 &a,a代表的数据类型不一样 & ...

  7. python:实现9×9二维数组数独算法(附完整源码)

    python:实现9×9二维数组数独算法 from __future__ import annotationsMatrix = list[list[int]]# assigning initial v ...

  8. Java二维数组详解:二维数组的声明和初始化,以及获取二维数组的值

    为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来.二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列.下面 ...

  9. 利用二维数组(double[])实现一个矩阵类:Matrix。要求提供以下方法:(1)set(int row, int col, double value):将第row行第col列的元素赋值为valu

    利用二维数组(double[])实现一个矩阵类:Matrix.要求提供以下方法:(1)set(int row, int col, double value):将第row行第col列的元素赋值为valu ...

  10. python一维数组和二维数组,Python numpy实现二维数组和一维数组拼接的方法

    撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape 输出的值应该为(3,) 二维数组 2.numpy初始化二 ...

最新文章

  1. 网络推广计划浅析外链发布要遵循的几点小技巧!
  2. oracle返回表id,在Oracle的函数中,返回表类型的语句
  3. 【opencv系列04】OpenCV4.X图形绘制
  4. JVM参数-XX:+HeapDumpOnOutOfMemoryError
  5. how is __metadata.media_src generated in backend
  6. Get和Post请求和对应的参数获取
  7. 从一个表查询数据插入另一个表
  8. 【非原创】codeforces 1070C Cloud Computing 【线段树树状数组】
  9. matlab 颜色对照表
  10. 音视频学习(五)——H.264视频码流
  11. 【老生谈算法】matlab实现自适应滤波器源码——自适应滤波器
  12. 香港服务器的数据泄露是什么?怎样预防?
  13. 计算机专业夏令营英语面试范文,夏令营英语面试自我介绍
  14. 坚果pro2s android 8,坚果Pro2s和iPhone8手机对比实用评测
  15. FBEC2020大会圆满闭幕!区块链分会场人气爆棚!
  16. Matplotlib:面积图、填图、饼图
  17. SMS发送WapPush
  18. 贴现、贴现率、贴现值、现值、折现值、PV搞搞清楚
  19. 2019年3月计算机二级考试题库百度云,2019年3月计算机等级考试题库-二级MS Office试题...
  20. 各种药皂的使用和主注意事项

热门文章

  1. 【问题收录】Ubuntu14.04安装时黑屏处理
  2. 编译原理扫描程序,判断当前输入的程序中程序调用的函数是那个函数原型
  3. NetLogo入门(二)——模型基本语法
  4. Shiny平台构建与R包开发(七)——Shiny APP部署
  5. mysql 创建库 5.7_MySQL数据库之MySQL5.7创建用户时报错
  6. 灯泡亮度控制单片机_南航电赛-灯光控制系统
  7. DNA提取方法对浮游生物群落研究结果的影响
  8. 高颜值免费在线SCI绘图工具增加上传功能
  9. 国家微生物科学数据中心推出免费一站式生物信息分析云平台
  10. Cell:无症状新冠患者阳性持续105天