剑指offer(一):二维数组中的查找

题目:

  在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

         1   5   7   8   9 

   2   6   8   9  10

   3   7  10 11 13

   4   8  12 13 15

   5   9  13 14 16

        给定数字12,如上数组找出12是否存在该数组中

解决方法:

  可以利用左下角或者右上角的优势,比如左下角数字5上面的数字都比他小右边的数字都比他大,右上角数字9下面的数字都比他大左边的数字都比他小。

思路:

  如题要找的数字是12,此时我们使用右上角的优势,右上角数字9,小于12,所以这个时候就在他的下一行找,此时下一行是数字10,同理比12小,往下一行找,下一行数字是13,此时13>12,故此从13的左边找(13下面的肯定都比13大), 左边是11,此时11<12,故从11的下面找(11的左边肯定都比11小),下一行是数字13,此时13>12,故从13的左边找(下面的肯定比13大),13的左边是12,此时找到了12直接返回true即可。若是没有找到则返回false

 

代码:

 1 public class Solution {
 2     public boolean Find(int target, int [][] array) {
 3         int row = 0;
 4         int col = array[0].length-1;
 5         while(row < array.length && col >=0){
 6             if(array[row][col] > target){
 7                 col--;
 8             }else if(array[row][col] < target){
 9                 row++;
10             }else{
11                 return true;
12             }
13         }
14         return false;
15     }
16 }

 

 

 

转载于:https://www.cnblogs.com/rgever/p/9639176.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sed以及awk的替换命令

转载自&#xff1a;http://blog.csdn.net/imzoer/article/details/8721590 先看sed 的。 比如说&#xff0c; 在上面使用sed替换每行第一个出现的nau为n_a_u。 如果加上g参数&#xff0c;那么对已一行&#xff0c;每次遇到一个nau就要替换一次。 -----------------------------…

图片下载中文传输转义问题

// 定义utf-8转义失败&#xff0c;中文是一串什么3E%什么的 URLEncoder.encode((productName".jpeg"), "UTF-8") // 改成如下代码 new String((productName ".jpeg").getBytes("utf-8"), "ISO8859-1") 转载于:https://www.…

NetBeans Java EE技巧8:持久性单元

任何好的IDE的基本目标都是简化和组织代码和开发工作流程。 NetBeans在实现这些目标方面做得非常出色&#xff0c;有时我们将基础知识视为理所当然。 例如&#xff0c;如果您曾经试图在纯文本编辑器中阅读XML蒙上了双眼&#xff0c;那么过去在配置和使用Persistence Units时可能…

c语言循环链表中设立尾链表,C语言实现双向非循环链表(带头结点尾结点)的节点插入...

对于双向链表&#xff0c;个人推荐使用带头结点尾结点的方式来处理会比较方便。我在《C语言实现双向非循环链表(不带头结点)的节点插入》中详细实现了在不带头结点的情况下的插入。这次我们将会来在使用头结点尾结点的情况下在任意的位置插入元素。代码上传至 https://github.c…

ls实现列文件按时间排序

转载自&#xff1a;http://blog.csdn.net/gtuu0123/article/details/4420424 1) ls -lt 时间最近的在前面 2) ls -ltr 时间从前到后 3) 利用sort ls -l | sort 7 (日期为第8列) 时间从前到后 ls -l | sort -r 7 时间最近的在前面

sqlserver添加默认值

知识点&#xff1a; sql添加字段默认值时&#xff1a;1.如果有加 not null &#xff0c;则已有记录该字段值更新为默认值2.如果没有加 not null&#xff0c;则为null代码&#xff1a; IF EXISTS ( SELECT TOP 11FROM INFORMATION_SCHEMA.COLUMNSWHERE [TABLE_NAME] Produ…

android服务器 性能,Android性能优化(中)

Android性能优化在上一篇中介绍了性能优化的概念、内存泄漏和性能优化方式Android性能优化(上)我们继续说说Android性能优化数据库性能优化索引简单的说&#xff0c;索引就像书本的目录&#xff0c;目录可以快速找到所在页数&#xff0c;数据库中索引可以帮助快速找到数据&…

jvm系列二之GC收集器

目录 参考概念理解并发和并行吞吐量GC垃圾收集器Serial New收集器Parallel New&#xff08;并行&#xff09;收集器Parallel Scavenge&#xff08;并行&#xff09;收集器Serial Old&#xff08;串行&#xff09;收集器Parallel Old&#xff08;并行&#xff09;收集器CMS收集器…

shell脚本中一些特殊符号

在shell中常用的特殊符号罗列如下&#xff1a; # ; ;; . , / \\ string| ! $ ${} $? $$ $* \"string\"* ** ? : ^ $# $ command{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~ ~- & \\<...\\> - % ! # 井号 (…

java 并发执行_Java并发执行器的懒惰开发人员简介

java 并发执行如果我告诉您util.concurrent API自2004年起提供此类服务&#xff0c;我就会自欺欺人。但是&#xff0c;我想回顾一下一些很酷的功能。 并发专家&#xff0c;现在是时候关闭该窗口了。 所有其他人&#xff0c;请保持紧紧的乐趣。 你不会忘记你的根源 执行程序是具…

球球大作战测试服android版,球球大作战10.0体验服

在球球大作战10.0体验服中&#xff0c;2019球球们将迎来全新的冒险&#xff0c;多重外观&#xff0c;更加的绚丽夺目&#xff0c;探索新的地图&#xff0c;与不同的对手较量一番&#xff0c;无限吞噬&#xff0c;热血竞技&#xff0c;灵活的走位&#xff0c;搭配强力道具&#…

单线程的并发,协程

IO多路复用 作用:检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据) setblocking(Flase) 让原本阻塞的变成非阻塞(不等待)状态 import socket import selectsk socket.socket() sk.setblocking(False) try:sk.connect(("www.baidu.com",80)) exce…

linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

在做shell批处理程序时候&#xff0c;经常会涉及到字符串相关操作。有很多命令语句&#xff0c;如&#xff1a;awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号&#xff0c;可以达到类似效果&#xff0c;大家知道&#xff0c;使用内部操作符会省略启动外部程序等…

android.mk 模块编译,通过Android.mk添加一个编译模块到系统中的顺序如下

①LOCAL_PATH②CLEAR_VARS③LOCAL_SRC_FILES④LOCAL_CFLAGS(可选)⑤LOCAL_MODULE⑥LOCAL_STATIC_LIBRARIES(可选)⑦BUILD_XXX(12)Android.mk常用的变量变量名 说明LOCAL_PATH 用于确定源码所在的目录&#xff0c;最好把它放在CLEAR_VARS变量引用的前面&#xff0c;因为它不会被…

使用Spring Reactor Core进行分散收集

我在使用Netflix Rx-Java库方面有良好的工作经验&#xff0c;并且以前曾写过关于使用Rx-Java和Java 8 CompletableFuture解决分散式问题的博客。 在这里&#xff0c;我想探索使用Spring Reactor Core库应用相同的模式。 tldr –如果您熟悉Netflix Rx-Java&#xff0c;您已经很…

添加操作审计记录

1.所有操作审计记录 在环境变量/etc/profile中加入如下字段&#xff0c;可记录所有用户登录系统的操作 #history bash USERwhoami USER_IPwho -u am i 2>/dev/null| awk {print $NF}|sed -e s/[()]//g if [ "$USER_IP" "" ]; then USER_IPhostname fi …

android sharesdk分享功能,Android ShareSDK快速实现分享功能

第一步 &#xff1a;获取ShareSDK为了集成ShareSDK&#xff0c;您首先需要到ShareSDK官方网站注册并且创建应用&#xff0c;获得ShareSDK的Appkey&#xff0c;然后到SDK的下载页面下载SDK的压缩包&#xff0c;解压以后可以得到如下图的目录结构&#xff1a;ShareSDK在“ShareSD…

shell编程-分支语句

目标&#xff1a;完成这一章&#xff0c;你将能够作以下事情&#xff1a;描述条件分支语句中返回值的作用。 使用test命令来分析一个命令的返回值。 在shell程序中使用if和case结构。 1.返回值shell变量“&#xff1f;”中保存上一个被执行命令的返回值&#xff1a;0&#xff1…

android自定义表盘部件,Android自定义view仿支付宝芝麻信用表盘

演示效果实现步骤&#xff1a;1.画不同宽度和半径的内外圆弧2.通过循环旋转canvas&#xff0c;在固定位置绘制短线刻度&#xff0c;长线刻度&#xff0c;刻度文字3.绘制view中心几个文本&#xff0c;并调整位置4.实时更新当前旋转角度刷新小圆点位置&#xff1b;5.判断分数应该…

记录的详细操作

拷贝表拷贝结构 与数据create table copy_table select *from customer ;仅拷贝结构create table copy_table select *from customer where 0 > 1;共同点&#xff1a; 索引 描述&#xff08;自增&#xff09; 不能以下语法中记录的详细操作[] 表示可选的{}表示必选的增ins…