首页IT科技二维数组怎么看对应值(每日算法之二维数组中的查找)

二维数组怎么看对应值(每日算法之二维数组中的查找)

时间2025-08-04 17:24:42分类IT科技浏览4854
导读:JZ4二维数组中的查找 描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。...

JZ4二维数组中的查找

描述

在一个二维数组array中(每个一维数组的长度相同)             ,每一行都按照从左到右递增的顺序排序                   ,每一列都按照从上到下递增的顺序排序             。请完成一个函数      ,输入这样的一个二维数组和一个整数             ,判断数组中是否含有该整数                   。 [[1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15]] 给定 target = 7                   ,返回 true      。 给定 target = 3      ,返回 false             。 进阶:空间复杂度 O(1)O(1)        ,时间复杂度 O(n+m)O(n+m)

思路

利用该二维数组的性质: 每一行都按照从左到右递增的顺序排序                   , 每一列都按照从上到下递增的顺序排序 改变个说法             ,即对于左下角的值 m       ,m 是该行最小的数                   ,是该列最大的数 每次将 m 和目标值 target 比较: 当 m < target             ,由于 m 已经是该行最大的元素,想要更大只有从列考虑                   ,取值右移一位 当 m > target                   ,由于 m 已经是该列最小的元素,想要更小只有从行考虑             ,取值上移一位 当 m = target                   ,找到该值      ,返回 true 用某行最小或某列最大与 target 比较             ,每次可剔除一整行或一整列

代码

package mid.JZ4二维数组中的查找; public class Solution { public boolean Find(int target, int [][] array) { //先判断特殊情况 if (array.length == 0) return false; int n = array.length; if (array[0].length == 0) return false; int m = array[0].length; //从上下最大                   ,左右最小开始遍历 for (int i = n -1, j = 0; i >= 0 && j < m;) { //如果大了 if (array[i][j] > target) { //往上走 i--; } else if(array[i][j] < target) { //小了 往右走 j++; } else { //如果等于      ,返回true return true; } } return false; } }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
sccore.dll是什么意思(shwiconem.exe – shwiconem是什么进程 有什么用) 锚文本的重要性(了解什么是锚文本,如何使用它来优化您的网站)