剑指offer一:二维数组中的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
我的解题思路: 因为每一行都按照从左到右递增的顺序排序,所以我利用二分查找方法解决
package com.jianzhioffer;public class FindArray {public static void main(String[] args){int [][] array = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};System.out.println(Find(7, array));}public static boolean Find(int target, int [][] array) {int l = array.length;int r = array[0].length;int i=0;for(i=0;i<l;i++){int lf = 0;int rg = r -1;while(lf<=rg){int m = (lf + rg)/2;if(array[i][m] == target){return true;}if(array[i][m] > target){rg = m-1;}else{lf = m+1;}} }return false;}
}
别人的思路:
二维数组是有序的,从右上角来看,向左数字递减,向下数字递增。
因此从右上角开始查找,
- 当要查找数字比右上角数字大时,下移;
- 当要查找数字比右上角数字小时,左移;
- 如果出了边界,则说明二维数组中不存在该整数。
public class Solution {public boolean Find(int target, int [][] array) {if(array.length==0 || array[0].length==0)return false;int m = array[0].length-1;int n = 0;int temp = array[n][m];while(target != temp){if(m>0 && n<array.length-1){if(target>temp){n = n + 1;}else if(target<temp){m = m - 1;}temp = array[n][m];}else{return false;}}return true;}
}
剑指offer一:二维数组中的查找相关推荐
- 剑指offer:二维数组中的查找
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...
- 【LeetCode】剑指 Offer 04. 二维数组中的查找
[LeetCode]剑指 Offer 04. 二维数组中的查找 文章目录 [LeetCode]剑指 Offer 04. 二维数组中的查找 package offer;public class Solu ...
- 利用指针数组计算2个3行4列矩阵的和_[剑指 Offer] 04. 二维数组中的查找
难度:简单 题目链接:剑指 Offer 04. 二维数组中的查找 题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, ...
- 剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个 ...
- [剑指Offer]5.二维数组中的查找
题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...
- 剑指Offer #01 二维数组中的查找(Java描述)
题目来源:牛客网-剑指Offer专题 题目地址:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一 ...
- 《剑指Offer》——二维数组中的查找(JZ1)C++
文章目录 前言 题目:JZ1 二维数组中的查找 一.暴力解法 二.优化解法 总结 前言 题目:JZ1 二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, ...
- 剑指offer:二维数组中的查找python实现
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- Leetcode 剑指 Offer 04. 二维数组中的查找 (每日一题 20210727)
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.示例:现有矩 ...
最新文章
- Self-Attention 加速方法一览:ISSA、CCNet、CGNL、Linformer
- 【原】开源——基于文件驱动的站点开发
- python使用matplotlib可视化不同年份、不同项目的均值(mean)对比条形图(bar plot comparision of mean with different years)
- Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(4)...
- 别再傻傻地用这些软件G转P了,修复后不稳定的真相在这里
- 没有任何基础的可以学python吗-没有任何基础的人,该如何学习Python?「附具体步骤」...
- 网页全文搜索字符和全局搜索文件名【Edge和谷歌浏览器均适用】
- System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
- ThreadLocal如何实现?
- http协议与服务器通信,iPhone应用用HTTP协议和服务器通信
- 递归函数 二分查找法 的一些用法
- 41. 使用内容发布网络(2)
- 数据结构和算法常见面试题大全
- vue 地址区域选择组件
- Word 转 PDF 后目录链接无效的解决办法
- 【转】本科生如何发表论文
- 图片上传实时预览效果
- 为什么说小米会是品牌2020年最重要的增长源?
- 多元伯努利分布 multivariate bernoulli distribution
- Excel给证件照换底色,红、蓝、白底任你换,看完涨知识了