剑指 Offer - 01 - 二维数组中的查找

发布于 2024-07-26 13:32:51 字数 1719 浏览 10 评论 0

题目

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

解析

  • 这个题目比较好的解题思路是从右上角或者左下角开始找;这个是题目给定的每一行从左到右递增和每一列从上到下递增的原因;
  • 例如,从右上角开始找,设置两个变量 rowcol 分别代表行坐标和列坐标, 如果要找的数就是 target ,则直接返回;
  • 如果 arr[row][col] < target ,那 row = row + 1 ,因为它左边的都会 arr[row][col] 小,这是因为列增加的性质
  • 如果 arr[row][col] > target ,那 col = col - 1 ,因为它下面的都会 arr[row][col] 大,这是因为行增加的性质

从右上角开始查找代码

public class Solution {
    public boolean Find(int target, int[][] array) {
        int r = 0, c = array[0].length - 1;
        while (r < array.length && c >= 0)
            if (array[r][c] == target)
                return true;
            else if (array[r][c] > target)
                c--;
            else
                r++;
        return false;
    }
}

从左下角开始查找代码

public class Solution {
    public boolean Find(int target, int[][] array) {
        int r = array.length - 1, c = 0;
        while (r >= 0 && c < array[0].length)
            if (array[r][c] == target)
                return true;
            else if (array[r][c] > target)
                r--;
            else
                c++;
        return false;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

撩人痒

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文