算法013:二维数组中的查找-在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断中是否存在
题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:
现有矩阵 matrix 如下:
[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]
]
给定 target=5,返回true。
给定 target=20,返回false。限制:
0 <= n <= 1000
0 <= m <= 1000思路:
对角线发,从右上到做下,一次一行一列
1.代码如下 FindNumberIn2DArray.java:
package com.yuhl.right.leetcode;/*** @author yuhl* @Date 2020/10/25 7:22* @Classname FindNumberIn2DArray* @Description 二维数组中的查找* 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。** 示例:* 现有矩阵 matrix 如下:* [* [1, 4, 7, 11, 15],* [2, 5, 8, 12, 19],* [3, 6, 9, 16, 22],* [10, 13, 14, 17, 24],* [18, 21, 23, 26, 30]* ]* 给定 target = 5,返回 true。* 给定 target = 20,返回 false。** 限制:* 0 <= n <= 1000* 0 <= m <= 1000*/
public class FindNumberIn2DArray {public static void main(String[] args) {int[][] matrix ={{1, 4, 7, 11, 15},{2, 5, 8, 12, 19},{3, 6, 9, 16, 22},{10, 13, 14, 17, 24},{18, 21, 23, 26, 30}};boolean res = findNumberIn2DArray(matrix,5);System.out.println(res);}public static boolean findNumberIn2DArray(int[][] matrix, int target) {//方法三:对角线法m为2维数组的最大index,n为一维数组的最大index//1从右上角开始,如果A[m][n]=target 退出//2如果 A[m][n]>target ,n-1//3如果 A[m][n]<target ,m-1//空数组判断if(matrix == null ||matrix.length==0 ||matrix[0]==null || matrix[0].length==0){return false;}int m = matrix.length-1;//二维数组的最大indexint n = matrix[0].length -1;//一维数组的最大indeint i = 0;//指向当前m行int j = n;//指向最大列while(i<=m && j>=0){if(matrix[i][j] == target){return true;//找到这个元素} else if(matrix[i][j] > target){j --;//列去掉一行} else{i ++;}}return false;}
}
2.执行结果:
"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe"
true
算法013:二维数组中的查找-在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断中是否存在相关推荐
- 二维数组中的查找--元素从左到右递增,从上到下递增
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 首先选取数组中右上角的数字.如果 ...
- C语言:编写一个函数,计算二维数组中的最大元素,数组以指针的方式传递
/*编写一个函数,计算二维数组中的最大元素,数组以指针的方式传递*/ #include<stdio.h> #define N 4 #define M 3 int findmax(int ( ...
- 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分. 我们首先会想到常规方法:创建一个临时数组,遍历所给数组中的所有元素,将偶数 ...
- C语言试题二十四之编写一个函数unsigned function(unsigned w),w使一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。
1. 题目 请编写一个函数unsigned function(unsigned w),w使一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回. 比如:w是1 ...
- python多个for的执行顺序-python_装饰器篇(多个装饰器下的执行顺序)
在之前的帖子中,简单自我总结了装饰器的几个情况以及基本上使用,那么有基本上说的都是单个的装饰器修饰方法 有时候我们会发现一个方法上面有多个装饰器 如下: @dec2 @dec def a(a): if ...
- go 变量在其中一个函数中赋值 另一个函数_go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包...
本篇文章是 Go 语言学习笔记之函数式编程系列文章的第二篇,上一篇介绍了函数基础,这一篇文章重点介绍函数的重要应用之一: 闭包 空谈误国,实干兴邦,以具体代码示例为基础讲解什么是闭包以及为什么需要闭包 ...
- 反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)加入自己的思考(pytorch函数)(二)
ps之前写过反卷积(Deconvolution).上采样(UNSampling)与上池化(UnPooling)加入自己的思考(一),不过那是东拼西凑出来的别人的东西就是稍微加入点自己的理解.今天在看代 ...
- 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
题目解析部分 题目中说的这个数组使我们所熟知的杨氏矩阵 拿到一道题的解题思路应该是这样的:先看这道题中所用到的知识点,然后选用合适的类型和返回类型.先用伪代码来将整体思路屡清楚,再用代码去代替 伪代码 ...
- 6.3【字符数组编程】假定输入的字符串中只包含字母和*号。请编写子函数实现:除了字符串前导的*号之外,将串中其他*号全部删除。
#include<stdio.h> #include<string.h> #define N 100 int main() {char st[N],s[N];int i,j,l ...
最新文章
- 曾被ICLR拒稿,字节跳动今斩获最佳论文,ACL 2021各大奖项揭晓
- 怎么在电脑上使用python3.6_Windows下 Python3.6.1 运行环境的搭建
- 解决接收参数乱码,tomcat的URIEncoding=UTF-8
- 在实践中使用延迟队列
- c语言常用字符串处理函数6,【总结】C语言中常见的字符串处理函数
- 【Flink】数据传输 挖个坑 把自己埋了 ClassCastException String cannot be cast to [LJava.lang.String
- ie系列浏览器_IE浏览器换Logo,真担心你上网找不到图标
- hashmap是线程安全的吗?怎么解决?_线程安全及三种解决方案
- SQL Server不存在或拒绝访问故障的排除
- 2013年系统集成资质考试时间
- 【GYM-100889 C】Chunin Exam【左右手路径问题】
- 考研数据库系统概论题目整理
- 聊一聊关于“元宇宙”涉及的前端技术
- 个人对傅里叶分析的理解与整理(持续整理中)
- [linux内核] 3.系统调用处理过程
- 阿里架构师和你聊聊【系统架构】
- 手机计算机错误格式,手机内存卡提示文件格式错误怎么办【解决方法】
- EXCEL表单元格内特定内容的提取
- 为什么signed char的范围是-128~127
- Java视频教程(浙江大学翁恺)