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

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

时间2025-09-19 14:19:40分类IT科技浏览5477
导读: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
typescript值得学吗(TypeScript 学习笔记(十万字超详细知识点总结))