【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
    }
}
相关推荐
东坡肘子1 天前
OpenClaw 不错,但我好像没有那么需要 -- 肘子的 Swift 周报 #125
人工智能·swiftui·swift
Swift社区6 天前
LeetCode 391 完美矩形 - Swift 题解
算法·leetcode·swift
升讯威在线客服系统7 天前
从 GC 抖动到稳定低延迟:在升讯威客服系统中实践 Span 与 Memory 的高性能优化
java·javascript·python·算法·性能优化·php·swift
Swift社区7 天前
LeetCode 390 消除游戏 - Swift 题解
leetcode·游戏·swift
东坡肘子8 天前
春晚、机器人、AI 与 LLM -- 肘子的 Swift 周报 #124
人工智能·swiftui·swift
BatmanWayne11 天前
swift-微调补充
人工智能·swift
疯笔码良15 天前
【swiftUI】实现自定义的底部TabBar组件
ios·swiftui·swift
东坡肘子16 天前
祝大家马年新春快乐! -- 肘子的 Swift 周报 #123
人工智能·swiftui·swift
BatmanWayne16 天前
swift微调记录
微调·swift
追夢秋陽17 天前
Cocoa 使用NSCollectionView显示列表,数据不足布局异常处理
macos·objective-c·cocoa·swift·collectionview