美文网首页
二维数组中的查找

二维数组中的查找

作者: gaookey | 来源:发表于2020-11-23 19:23 被阅读0次

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

选取数组中右上角的数字(也可以选取左下角的数字)。如果该数字等于要查找的数字,则査找过程结束;如果该数字大于要查找的数字,则剔除这个数字所在的列;如果该数字小于要查找的数字,,则剔除这个数字所在的行。也就是说,如果要査找的数字不在数组的右上角,则每一次都在数组的査找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者査找范围为空。

func find(matrix: [[Int]], number: Int) -> Bool {
    guard !matrix.isEmpty,
          let columns = matrix.max(by: { $0.count < $1.count })?.count
    else { return false }
    
    var b = true
    matrix.forEach { numbers in
        if numbers.count != columns {
            b = false
        }
    }
    if !b {
        return false
    }
    
    let rows = matrix.count
    var row = 0
    var column = columns - 1
    
    while row < rows, column >= 0 {
        if matrix[row][column] == number {
            return true
        } else if matrix[row][column] > number {
            column -= 1
        } else {
            row += 1
        }
    }
    
    return false
}

摘抄资料:《剑指offer》

相关文章

  • 算法题

    行列都是有序的二维数组,查找k是否存在【查找法】 二维数组中的查找(行列分别有序数组的二分查找)【递归法】 快速排...

  • 剑指Offer二维数组查找

    剑指Offer二维数组查找 二维数组查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到...

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

    题目 题目分析 算法-二维数组中的查找 比如一个二维数组是这样: 要查找数组7在不在数组内,根据前人总结出来的规律...

  • 《剑指offer》(一)-二维数组中的查找(java)

    数组--二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序...

  • 刷题-数组专项

    数组 二维数组中的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每...

  • 二维数组中的查找(Javascript编程) function Find(target, array){ // w...

  • 牛客网高频算法题系列-BM18-二维数组中的查找

    牛客网高频算法题系列-BM18-二维数组中的查找 题目描述 在一个二维数组array中(每个一维数组的长度相同),...

  • 数组——二维数组中查找

    一、题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下...

  • LeetCode 每日一题 [39] 二维数组中的查找

    LeetCode 二维数组中的查找 [简单] 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序...

  • 剑指offer(Java版)day01:二维数组中的查找|替换空

    1二维数组中的查找 【题目】在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每...

网友评论

      本文标题:二维数组中的查找

      本文链接:https://www.haomeiwen.com/subject/cubviktx.html