• 剑指 Offer 04.二维数组中的查找


    题目

    力扣-剑指 Offer 04. 二维数组中的查找

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

    示例:
    现有矩阵 matrix 如下:
    [
      [1,   4,  7, 11, 15],
      [2,   5,  8, 12, 19],
      [3,   6,  9, 16, 22],
      [10, 13, 14, 17, 24],
      [18, 21, 23, 26, 30]
    ]
    给定 target = 5,返回 true。
    给定 target = 20,返回 false。
    
     
    限制:
    0 <= n <= 1000
    

    题解

    难度为中等。

    解法一:暴力法

    先用一个循环,每次遍历出一个数组nums,然后用sort.SearchInts查出nums数组中target的下标,接着做下判断即可。

    //Go
    func findNumberIn2DArray(matrix [][]int, target int) bool {
    	for _, nums := range matrix {
    		//遍历数组切片,查找数组中是否含有target值,如果查找不到,返回值是target应该插入数组的位置(会保持数组的递增顺序)
    		i := sort.SearchInts(nums, target) //查找nums数组中target的下标
    		//插入的位置小于数组长度 且 插入数组的位置上的值和目标值相等
    		if i < len(nums) && target == nums[i] {
    			return true
    		}
    	}
    	return false
    }
    

    leetcode-cn执行:

    执行用时:
    28 ms, 在所有 Go 提交中击败了80.58%的用户
    内存消耗:6.6 MB, 在所有 Go 提交中击败了70.78%的用户
    

    牛客网运行:

    运行时间:7ms
    超过8.42%用Go提交的代码
    占用内存:3204KB
    超过44.21%用Go提交的代码
    
             
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
        
    特此声明:所有评论和私信都会在第一时间回复。也欢迎园子里和园子外的大大们指正错误,共同进步。或者直接私信我 (^∀^)
        
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    本博客的所有打赏均将用于博主女朋友的化妆品购买以及养肥计划O(∩_∩)O。我是【~不会飞的章鱼~】!

    联系或打赏博主【~不会飞的章鱼~】!https://www.cnblogs.com/OctoptusLian/

  • 相关阅读:
    【Mysql 8001错误
    【mysql查询今天、昨天、7天、近30天、本月、上一月 数据】
    bootstrap-table 常用总结-1
    前端下载图片
    swiper 轮播中常用的效果,持续更新
    常用的时间函数整理
    拼接字符转的转义
    Ajax跨域请求,设置content
    JS MD5 返回二进制格式
    jqgrid three 树形结构
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/14472081.html
Copyright © 2020-2023  润新知