【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
    }
}
相关推荐
四眼蒙面侠9 小时前
深入 Open Agent SDK(番外篇):实战验证——把 SDK 塞进一个 macOS 原生 Agent 应用
swift·claudecode·bmad·agentsdk·openagentsdk
2501_915106321 天前
在Mac上搭建iOS开发环境的详细步骤与注意事项
ide·vscode·macos·ios·个人开发·swift·敏捷流程
harder3212 天前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
sakiko_2 天前
UIKit学习笔记2-组件嵌套、滚动视图等
笔记·学习·objective-c·swift·uikit
四眼蒙面侠2 天前
深入 Open Agent SDK(五):会话持久化与安全防线
swift·claudecode·bmad·openagentsdk
茶底世界之下3 天前
诡异!String 参数在闭包里变成了 <uninitialized>,我排查了整整两天
ios·xcode·swift
四眼蒙面侠3 天前
深入 Open Agent SDK(四):多 Agent 协作——子代理、团队与任务编排
swift·agentsdk·openagentsdk
东坡肘子3 天前
Swift 并发正被更广泛地接纳 -- 肘子的 Swift 周报 #133
人工智能·swiftui·swift
四眼蒙面侠4 天前
深入 Open Agent SDK(三):MCP 集成实战——让 Agent 连接万物
swift·agentsdk·openagentsdk
报错小能手5 天前
Swift 并发 Combine响应式框架
开发语言·ios·swift