【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
    }
}
相关推荐
茶底世界之下2 小时前
Harbeth:高性能Metal图像处理库,让你的图片处理速度飞起来!
前端·github·swift
风舞雪凌月3 小时前
【趣谈】移动系统和桌面系统编程语言思考
java·c语言·c++·python·学习·objective-c·swift
UXbot1 天前
AI App 设计生成工具哪个好?
ui·kotlin·软件构建·产品经理·ai编程·swift
黄林晴1 天前
Swift 杀进 Android,Google 和 Apple 都要失眠了?
android·前端·swift
东坡肘子1 天前
一墙之隔,不同的时空 -- 肘子的 Swift 周报 #129
人工智能·swiftui·swift
harder3212 天前
Swift 面向协议编程的 RMP 模式
开发语言·ios·mvc·swift·策略模式
KevinCyao4 天前
iOS短信营销接口示例代码:Swift/Xcode集成营销短信API的完整开发教程
ios·swift
2501_916007475 天前
iOS 开发工具有哪些 按开发流程整理的工具清单
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
报错小能手6 天前
ios开发方向——Swift语言学习 为啥要学Swift?
学习·ios·swift