【Swift】LeetCode 240.搜索二维矩阵 II

240.搜索二维矩阵 II

题目描述

思路 and Swift 题解

这道题可以使用二分搜索来快速解决。

具体来说,首先比较数组当中一行的第一个元素是否比target大,如果是的话,那么就没有继续比下去的必要了,因为后面的数必然都比target大,直接返回false

否则,对这一行进行二分搜索。我们采用左闭右开的方式进行搜索,如果nums[l] == target,则返回true。否则继续去下一行进行比对与二分搜索。

一个优化是,可以首先让target与这一行的首尾元素进行比较。如果target在首尾元素构成的闭区间当中,再进行二分搜索。

完整的 Swift 题解是:

swift 复制代码
class Solution {
    func searchMatrix(_ matrix: [[Int]], _ target: Int) -> Bool {
        var m = matrix.count
        var n = matrix[0].count

        for i in 0..<m {
            if target < matrix[i][0] {
                return false
            } else {
                var l = 0, r = n - 1
                while l < r {
                    var mid = (l + r) / 2
                    if matrix[i][mid] < target {
                        l = mid + 1
                    } else {
                        r = mid
                    }
                }

                if matrix[i][l] == target {
                    return true
                }
            }
        }
        return false
    }
}
相关推荐
东坡肘子12 小时前
Swift 还让你 Excited 吗?-- 肘子的 Swift 周报 #141
人工智能·swiftui·swift
sweet丶3 天前
Swift 元编程-Macro
swift
影寂ldy6 天前
WinForm PictureBox控件 + ImageList组件 完整笔记
开发语言·笔记·swift
Deepzz7 天前
macOS 上调教第三方鼠标的一些经验:从滚动顺滑到输入法自动切换
macos·swift·鼠标
东坡肘子7 天前
WWDC 26:AI 帮你看完了,然后呢?-- 肘子的 Swift 周报 #140
人工智能·swiftui·swift
大熊猫侯佩8 天前
SwiftData 迁移深度指南:从入门到“填坑”(下集)
数据库·swift·编程语言
大熊猫侯佩8 天前
SwiftData 迁移深度指南:从入门到“填坑”(上集)
数据库·swift·编程语言
多彩电脑9 天前
SwiftUI的导航界面的嵌套问题
开发语言·swift·设计语言
wjm0410069 天前
ios内存管理
ios·objective-c·swift·客户端开发
大熊猫侯佩9 天前
Swift 6.4 的 Ref / MutableRef 大揭秘:给值类型开一扇“安全的小窗”
ios·swift·编程语言