zoukankan      html  css  js  c++  java
  • [Swift]LeetCode240. 搜索二维矩阵 II | Search a 2D Matrix II

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10205209.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

    • Integers in each row are sorted in ascending from left to right.
    • Integers in each column are sorted in ascending from top to bottom.

    Example:

    Consider the following 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]
    ]
    

    Given target = 5, return true.

    Given target = 20, return false.


    编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

    • 每行的元素从左到右升序排列。
    • 每列的元素从上到下升序排列。

    示例:

    现有矩阵 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


    328ms

     1 class Solution {
     2     func searchMatrix(_ matrix: [[Int]], _ target: Int) -> Bool {
     3         // start at top right
     4         if matrix.count < 1 || matrix[0].count < 1 { return false }
     5         
     6         let rows = matrix.count, cols = matrix[0].count
     7         var r = 0, c = cols - 1
     8         
     9         while c >= 0, r < rows {
    10             let num = matrix[r][c]
    11             if num == target {
    12                 return true
    13             } else if num < target {
    14                 r += 1
    15             } else {
    16                 c -= 1
    17             }
    18         }
    19         
    20         return false
    21     }
    22 }

    332ms

     1 class Solution {
     2     func searchMatrix(_ matrix: [[Int]], _ target: Int) -> Bool {
     3     guard matrix.count > 0, matrix[0].count > 0 else {
     4         return false
     5     }
     6     
     7     let m = matrix.count
     8     let n = matrix[0].count
     9     
    10     if target < matrix[0][0] || target > matrix[m-1][n-1] {
    11         return false
    12     }
    13     
    14     var i = m-1, j = 0
    15     
    16     while i >= 0, j < n {
    17         if matrix[i][j] == target {
    18             return true
    19         } else if matrix[i][j] > target {
    20             i -= 1
    21         } else {
    22             j += 1
    23         }
    24     }
    25     
    26     return false
    27     }
    28 }

    332ms

     1 class Solution {
     2     func searchMatrix(_ matrix: [[Int]], _ target: Int) -> Bool {
     3         guard !matrix.isEmpty && !matrix[0].isEmpty else {
     4             return false
     5         }
     6 
     7         var row = 0
     8         var column = matrix[0].count - 1
     9         while column >= 0 && row < matrix.count {
    10             if matrix[row][column] > target {
    11                 column -= 1
    12             } else if matrix[row][column] < target {
    13                 row += 1
    14             } else {
    15                 return true
    16             }
    17         }
    18 
    19         return false
    20     }
    21 }

    340ms

     1 class Solution {
     2     func searchMatrix(_ matrix: [[Int]], _ target: Int) -> Bool {
     3 
     4         guard matrix.count > 0, matrix[0].count > 0 else { return false }
     5         var m = matrix.count, n = matrix[0].count
     6         var i = m-1, j = 0
     7         while true {
     8             if matrix[i][j] == target { return true }
     9             else if matrix[i][j] < target { j += 1 }
    10             else {
    11                 i -= 1
    12             }
    13             if i < 0 || j >= n { return false }
    14         }
    15         return false
    16     }
    17 }

    348ms

     1 class Solution {
     2     func searchMatrix(_ matrix: [[Int]], _ target: Int) -> Bool {
     3         for i in 0..<matrix.count {
     4             for j in stride(from: matrix[i].count, to: 0, by: -1) {
     5                     if matrix[i][j - 1] == target {
     6                         return true
     7                     }
     8             }
     9         }
    10         
    11         return false 
    12     }
    13 }
  • 相关阅读:
    SSDB安装配置记录
    Ubuntu上通过nginx部署Django笔记
    PyCharm创建virtualenv方法
    Python3--列表生成式
    K最近邻算法项目实战
    K最近邻算法
    人工智能之机器学习
    C#把汉字转换成16进制(HEX)并向串口发送数据
    Ubuntu-18.04.2系统 Nginx+uWSGI+Django 部署生产环境
    HTTP响应状态码说明
  • 原文地址:https://www.cnblogs.com/strengthen/p/10205209.html
Copyright © 2011-2022 走看看