<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>LeetCode 74 on Jeanphilo Blog</title><link>https://shio-chan-dev.github.io/jeanblog/zh/tags/leetcode-74/</link><description>Recent content in LeetCode 74 on Jeanphilo Blog</description><generator>Hugo -- 0.165.0</generator><language>zh-cn</language><lastBuildDate>Thu, 13 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://shio-chan-dev.github.io/jeanblog/zh/tags/leetcode-74/index.xml" rel="self" type="application/rss+xml"/><item><title>LeetCode 74：搜索二维矩阵</title><link>https://shio-chan-dev.github.io/jeanblog/zh/alg/leetcode/binary-search/74-search-a-2d-matrix/</link><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/alg/leetcode/binary-search/74-search-a-2d-matrix/</guid><description>&lt;p&gt;给你一个 &lt;code&gt;m x n&lt;/code&gt; 的整数矩阵 &lt;code&gt;matrix&lt;/code&gt; 和一个整数 &lt;code&gt;target&lt;/code&gt;。如果 &lt;code&gt;target&lt;/code&gt; 在矩阵中，返回 &lt;code&gt;True&lt;/code&gt;；否则返回 &lt;code&gt;False&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;题目给出的矩阵满足两个条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每一行都按非递减顺序排列。&lt;/li&gt;
&lt;li&gt;每一行的第一个整数都严格大于上一行的最后一个整数。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要求算法的时间复杂度为 &lt;code&gt;O(log(m * n))&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;例如，对于下面的矩阵：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1 3 5 7
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;10 11 16 20
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;23 30 34 60
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;target = 3&lt;/code&gt; 时返回 &lt;code&gt;True&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;target = 13&lt;/code&gt; 时返回 &lt;code&gt;False&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;约束如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1 &amp;lt;= m, n &amp;lt;= 100&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-10^4 &amp;lt;= matrix[i][j], target &amp;lt;= 10^4&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LeetCode 提供的方法签名是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Solution&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;searchMatrix&lt;/span&gt;(self, matrix: List[List[int]], target: int) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; bool:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="第一步扫描每一个元素"&gt;第一步：扫描每一个元素&lt;/h2&gt;
&lt;p&gt;现在只有题目条件和方法签名，还没有一段能判断目标值是否存在的代码。先解决最基本的问题：怎样得到一个可以直接运行、结果确定正确的版本？&lt;/p&gt;
&lt;p&gt;当前基线无法对示例中的 &lt;code&gt;3&lt;/code&gt; 或 &lt;code&gt;13&lt;/code&gt; 给出答案。加入一层遍历每一行的循环，再在当前行中检查每一个值。遇到目标值就立即返回 &lt;code&gt;True&lt;/code&gt;；只有检查完所有元素仍未命中时，才返回 &lt;code&gt;False&lt;/code&gt;。&lt;/p&gt;</description></item></channel></rss>