剑指offer算法 java实现 二维数组中的查找

华为OD机试真题 新系统【Skill执行链完整性检测】 华为OD机试 新系统真题【Skill执行链完整性检测】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【Skill执行链完整性检测】 阅读详情

剑指offer算法 java实现

题目:

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

例如下面的二维数组就是每行、每列都是递增排序。如果在这个数组中查找数字7,则返回true,如果查找数组5,由于数组中不含有该数字,则返回false。


1  2  8  9

2  4  9  12

4  7  10  13

6  8  11  15


当我们解决一个问题的时候,一个很有效的方法就是从一个具体的问题入手,通过分析简单具体的例子,试图寻找普遍的规律。


package com.ynu.www.offer;  
  
public class FindFromMatrix {  
  
    private static int[][] sample = new int[][] { { 1, 2, 8, 9 },  
            { 2, 4, 9, 12 }, { 4, 7, 10, 13 }, { 6, 8, 11, 15 } };  
  
    public static void printSample() {  
        for (int i = 0; i < sample.length; i++) {  
            for (int j = 0; j < sample[i].length; j++) {  
                System.out.print(sample[i][j] + " ");  
            }  
            System.out.println();  
        }  
    }  
  
    public static boolean getValuefromMatrix(int[][] sample, int rows,  
            int columns, int num) {  
        boolean found = false;  
        if (sample != null && rows > 0 && columns > 0) {  
            int row = 0;  
            int column = columns - 1;  
            while (row < rows && column >= 0) {  
                int tempValue = sample[row][column];  
                if (num > tempValue) {  
                    ++row;  
                } else if (num < tempValue) {  
                    --column;  
                } else {  
                    found = true;  
                    break;  
                }  
            }  
        }  
  
        return found;  
    }  
  
    public static void main(String[] args) {  
        printSample();  
        System.out.println(getValuefromMatrix(sample, 4, 4, 7));  
  
    }  
}



根据分析,我们每次都选取数组查找范围的右上角数字,同样,我们可以选取左下角的数字,但是我们不能选择左上角或者右下角,因为无法缩小查找范围。

【银河麒麟桌面系统】自定义ISO镜像操作实践 本文详细介绍了麒麟操作系统Kylin-Desktop-V10-SP1的ISO镜像定制流程。通过挂载原始镜像、解压文件系统、进入chroot环境进行系统定制(包括文件替换和软件管理),最终重构squashfs并生成新ISO。关键步骤包括:挂载镜像到mnt目录、解压filesystem.squashfs、替换源配置文件、在chroot环境中清理系统、重新生成squashfs文件以及使用mkisofs命令创建新镜像。文章特别标注了x86和ARM架构的不同命令参数,并提供了安装测试验证方法。整个过程展示了从原始镜像 阅读详情

相关推荐

电动汽车充电设备标准化设计方案:电气原理图

80kW一体式一机一枪充电机电气原理 主电路拓扑见图1,配置1个250A直流充电连接装置,提供4个充电模块安装位置,根据充电功率需求可选配2~4个20kW充电模块。内置直流电能表和计费控制单元,实现计量计费和充电控制功能。 图1 80kW一体式一机一枪充电机主电路拓扑 ...

santirenpc的博客 1万+

二维数组打乱顺序 java_剑指offer(Java版)第二题 /*在一个二维数组中,每一行都按照从左到右递增的顺序排序, * 每一列都按照从上到下递增的顺序排序。请完成一个函数, * 输入这样...

/*在一个二维数组中,每一行都按照从左到右递增的顺序排序,* 每一列都按照从上到下递增的顺序排序。请完成一个函数,* 输入这样的一个二维数组和一个整数,*** 判断数组中是否含有该整数。*/import java.util.*;public class Class3 {static class findHaveNumber{public boolean findHaveNumber(int[][]...

weixin_31956641的博客 293

ROS2实战:手把手教你用CMake集成自定义DDS(以CycloneDDS为例)

本文详细介绍了如何在ROS2中通过CMake集成自定义DDS(以CycloneDDS为例),涵盖环境准备、源码编译、ROS2工作区集成、性能调优及常见问题排查。通过RMW中间件抽象层,开发者可以灵活切换DDS实现,提升系统实时性和可靠性。

weixin_29284201的博客 347

剑指 Offer 04. 二维数组中的查找

在一个 n * m 的中,每一行都按照从左到右的顺序排序,每一列都按照从上到下的顺序排序。请完成一个高效的函数,输入这样的一个和,判断数组中现有矩阵 matrix 如下:给定 target = 5,返回 true。给定 target = 20,返回 false。

kashine的博客 371

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 339

T100批处理作业开发

g_bgjob = ‘Y’ 后台执行g_bgjob = ‘N’ 前台执行。

weixin_43400895的博客 585

【矩阵运算和Java二维数组对矩阵常见运算的实现】

#mermaid-svg-aYCXZHLt007s4IM4 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-aYCXZHLt007s4IM4 .label text{fill:#333}#mermaid-svg-aYCXZHLt007s4IM4 .node rect,#mermaid-svg-aYCXZHLt00

未闻花名丶的博客 6709

医疗大模型实战——从零构建MedicalGPT全流程解析

本文详细解析了从零构建医疗大模型MedicalGPT的全流程实战。基于Qwen-7B模型与约195万条中文医疗数据,完整复现了增量预训练、监督微调与偏好对齐三大核心环节,并分享了如何在有限硬件资源下实现高效训练与部署,为开发者提供了可复现的医疗AI项目实战指南。

weixin_29193259的博客 553

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

题目 1、在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 public class Solution { public boolean find(int target, int [][] array) { } } 1 3 5 7 9 2 6 10 12 18 实现代码如下: public class Getnum { public static void main(String arg

奈一的博客 1673

AD | Altium Designer(原理图设计、电路仿真、PCB绘图)汉化版

Altium Designer(原理图设计、电路仿真、PCB绘图)

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 4162

Python 实现生命游戏及进化模拟完整指南

生命模拟是进化计算的一个特定子集,模拟了自然界中所观察到的自然过程,例如粒子或鸟群的聚集方式。生命模拟只是用来探索和优化问题的模拟形式之一,还有很多其他形式的模拟,可以更好地建模各种过程,但它们都源于康威生命游戏 (Conway’s Game of Life)。在本节中,我们将介绍生命模拟的基本概念,并使用 Python 实现康威生命游戏。

盼小辉丶的博客 7万+

第一题:java及python在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

/*在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 */ /* 从右上方开始,比他小的往左边找,比他大的往下找,但是不能break要用continue继续执行。 */ import java.util.*; import java.lang....

sun_fengjiao的博客 999

Python实战:打造学生信息管理系统

通过本教程,我们构建了一个简单的学生信息管理系统,实现了基本的添加、删除、修改和查询功能。当然,这个系统还有很多可以改进和扩展的地方,比如添加用户界面、增加数据持久化功能、支持批量操作等。简介:本文将介绍如何使用Python编写一个功能齐全的学生信息管理系统,包括添加、删除、修改和查询学生信息的基本操作。学生信息管理系统是学校日常管理中不可或缺的一部分,它能够帮助管理人员快速、准确地管理学生信息,提高工作效率。为了实现上述功能,我们可以设计一个包含学生信息的字典,并使用函数来封装各个操作。

铭渊老黄 1488

剑指offer算法 java实现 二维数组中的查找

剑指offer算法 java实现 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上往下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该函数。 例如下面的二维数组就是每行、每列都是递增排序。如果在这个数组中查找数字7,则返回true,如果查找数组5,由于数组中不含有该数字,则返回false。 1  2  8  9

qq_35124535的博客 359

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

JAVA实现二维数组中的查找(《剑指offer》)

最近在刷《剑指offer》里的编程题,但是网上关于《剑指offer》的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码(当然也有部分是借鉴了网上别人的解答的,出处未注明敬请之处请指出,侵删),希望能对大家的学习有所帮助。 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的

遥同学的博客 2639

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

剑指offer 数据结构与算法 二维数组查找 java 实现

应该注意java中二维数组的定义,以及使用方面与c中的区别 import java.util.Scanner; public class FindTwoSystemArray { //查找函数 public boolean find(int[][] array,int rows,int columns,int num){ boolean found = false; if(

Fighting_rookie的博客 447

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

发现之前刷的题又忘记了好多,决定重新再刷一遍。 先从剑指offer开始吧!!!! 第一题,二维数组中的查找。 题目表述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 这个题目的解题方法就是从右上角开始往左和往下两边遍历,仔细一想,好想是变形后的二分查...

JerryZengZ的博客 194

牛客网-剑指offer(Java实现版本)

ps:这也算是一个鸿篇巨制啦,关于牛客网的剑指offer题目终于用Java实现了一遍,其实之前草率的实现了一遍,但是很快就忘了,,,,更过分的是我再写这篇博文的时候,前面的有些题我依旧有一些忘记了,有几道题难度太大,我也是一知半解。太TM难过了。欢迎大家在参考的同时,随时向我提意见,我会很高心和小可爱、小帅哥讨论滴,以加深我的记忆。o( ̄▽ ̄)o谢啦!!☆⌒(*^-゜)v,,,也欢迎大家收藏我的blog,里面会有一些实用或者有趣或者深刻的内容,嘻嘻嘻。 二维数组的查找 FindArray 替换空格 Repl

单线程的Daniel的博客 488

《剑指offer》66题JAVA代码算法实现全集

这篇文章是自己在做《剑指offer》过程中的记录和总结,我发现自己出错的原因大部分是因为这些代码我都是直接手打的,没有使用IDE,很多这样最能检验自己的基本功是否扎实,强推~以下这些题目提供的解法大部分都是我在答完题之后结合别人的解题思路进行了整合,同时也会贴出别人的多元化解法。所有题目的目录如下:【剑指offer——JAVA实现】二维数组中的查找【剑指offer——JAVA实现】替换空格【剑指o...

罗先森何其有幸的博客 1392

数据结构与算法_剑指Offer03_二维数组中的查找_JAVA实现

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

loveloose的博客 157

判断数组二维数组长度_[剑指offer]1二维数组查找

今天开始讲和大家坚持打卡面试非常重要算法练习---剑指offer,希望我们能一起肝。1 题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2 思路从右上角开始比较,从而每次缩小一行或者一行减少搜索范围首先选取数组中右上角的数字。如果该数字等...

weixin_33492955的博客 272

二维数组的查询、替换空格、从尾到头访问单链表

啊啊啊啊,很久没有写代码了,打算每天都刷一下牛客网上面《剑指offer》里面的题,每天一题,分别用Java和Js代码写,本来想写算法,用c语言写,但是发现这个里面可以c++,没有c,那就先写java和js代码,后面再写C++.三个题写一个博客。这个学期没怎么学习,导致很多基础东西(函数等等)用法都忘记了 一、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都...

sunandstarws的博客 223

数据结构与算法-剑指Offer系列(3)二维数组中的查找-Java实现

题目3:二维数组中的查找 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路: 首先选取数组中右上角的数字,如果该数字等于要查找的数组, 则查找过程结束; 如果该数字大于要查找的数字,则删除这个数字所在的列; 如果该数字小于要查找的数字,则剔除这个数...

Three_ST的博客 149

【Java】剑指offer-leetcode题解

【Java】剑指offer-leetcode题解 文章目录【Java】剑指offer-leetcode题解数组中重复的数字剑指offer思路哈希二维数组中的查找替换空格从尾到头打印链表递归辅助栈重建二叉树用两个栈实现队列斐波那契数列青蛙跳台阶问题旋转数组的最小数字矩阵中的路径机器人的运动范围剪绳子剪绳子 II二进制中1的个数数值的整数次方打印从1到最大的n位数删除链表的节点正则表达式匹配表示数值的字符串调整数组顺序使奇数位于偶数前面链表中倒数第k个节点反转链表合并两个排序的链表树的子结构二叉树的镜像对称的二

小七自学博客 1717

LeetCode 之 剑指 Offer 04. 二维数组中的查找(Java)

LeetCode 之 剑指 Offer 04. 二维数组中的查找(Java),在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。本文简要分析解题思路,提供暴力遍历和规律性删减法。

渣渣的夏天 708

java二维数组行列互换_「剑指offer题解」二维数组中的查找

关注我的微信公众号:后端技术漫谈不定期推送关于后端开发、爬虫、算法题、数据结构方面的原创技术文章,以及生活中的逸闻趣事。原创博客主要内容Java知识点复习全手册Leetcode算法题解析剑指offer算法题解析SpringCloud菜鸟入门实战系列SpringBoot菜鸟入门实战系列Python爬虫相关技术文章后端开发相关技术文章前言众所周知,对于面试而言,《剑指offer》是一本“好书”。如果你...

weixin_33117401的博客 203
上一篇: 如何判断数据中某张表是否存在
下一篇: 剑指offer算法 java实现 替换字符串空格
黄玮鹏
博客等级 码龄17年 262粉丝 20原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值