【剑指Offer 1.二维数组中的查找】|刷题打卡

118 阅读1分钟

目录

  • 题目描述
  • 思路分析
  • AC 代码
  • 总结

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述

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

给定 target = 3,返回 false。

示例1

输入

7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

返回值

true

说明

存在7,返回true

示例2

输入

3,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

返回值

false

说明

不存在3,返回false

二、思路分析

难度:中等

看到这个题的时候,我们最直观解题思路就是使用暴力法,遍历一遍数组,我们就知道结果了。

三、AC 代码

语言:Go

代码:

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param target int整型 
 * @param array int整型二维数组 
 * @return bool布尔型
*/
func Find( target int ,  array [][]int ) bool {
    for i := 0; i < len(array); i++ {
        for j := 0; j < len(array[0]); j++ {
            if target == array[i][j] {
                return true;
            }
        }
    }
    return false;
}

通过截图:

image.png

四、总结

暴力法的时间复杂度是O(n^2),最坏的情况就是每个元素都遍历一遍,空间复杂度是O(1)。 但是,我们利用到二维数组的行递增和列递增的特性。