<?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>函数 on Ta0X1 の Blog</title><link>https://blog.taoxi.ink/tags/%E5%87%BD%E6%95%B0/</link><description>Recent content in 函数 on Ta0X1 の Blog</description><generator>Hugo</generator><language>zh-CN</language><copyright>2025-2026 Ta0X1 の Blog</copyright><lastBuildDate>Mon, 22 Sep 2025 05:19:49 +0800</lastBuildDate><atom:link href="https://blog.taoxi.ink/tags/%E5%87%BD%E6%95%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>Leetcode twoSum函数详解</title><link>https://blog.taoxi.ink/p/20241116/</link><pubDate>Sat, 16 Nov 2024 16:00:00 +0800</pubDate><guid>https://blog.taoxi.ink/p/20241116/</guid><description>&lt;h1 id="对twosum函数代码的详细讲解"&gt;《对&amp;quot;twoSum&amp;quot;函数代码的详细讲解》&lt;/h1&gt;
&lt;p&gt;以下将针对这份代码进行详细讲解，旨在帮助零基础的初学者理解其功能及实现逻辑。&lt;/p&gt;
&lt;h2 id="一整体代码结构概述"&gt;一、整体代码结构概述&lt;/h2&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;(object):
&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;twoSum&lt;/span&gt;(self, nums, target):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; length &lt;span style="color:#f92672"&gt;=&lt;/span&gt; len(nums)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i &lt;span style="color:#f92672"&gt;in&lt;/span&gt; range(length):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; j &lt;span style="color:#f92672"&gt;in&lt;/span&gt; range(length):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; nums[i] &lt;span style="color:#f92672"&gt;+&lt;/span&gt; nums[j] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; target &lt;span style="color:#f92672"&gt;and&lt;/span&gt; i&lt;span style="color:#f92672"&gt;!=&lt;/span&gt; j:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; [i, j]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这段代码定义了一个名为 Solution 的类，其中包含了一个名为 twoSum 的方法。该方法的主要目的是在给定的数字列表 nums 中，找到两个不同的数，使得它们相加的和等于给定的目标值 target，并返回这两个数在列表中的索引。&lt;/p&gt;</description><content:encoded><![CDATA[<h1 id="对twosum函数代码的详细讲解">《对&quot;twoSum&quot;函数代码的详细讲解》</h1>
<p>以下将针对这份代码进行详细讲解，旨在帮助零基础的初学者理解其功能及实现逻辑。</p>
<h2 id="一整体代码结构概述">一、整体代码结构概述</h2>
<div class="highlight"><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;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Solution</span>(object):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">twoSum</span>(self, nums, target):
</span></span><span style="display:flex;"><span>        length <span style="color:#f92672">=</span> len(nums)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(length):
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span> j <span style="color:#f92672">in</span> range(length):
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span> nums[i] <span style="color:#f92672">+</span> nums[j] <span style="color:#f92672">==</span> target <span style="color:#f92672">and</span> i<span style="color:#f92672">!=</span> j:
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">return</span> [i, j]
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> []
</span></span></code></pre></div><p>这段代码定义了一个名为 Solution 的类，其中包含了一个名为 twoSum 的方法。该方法的主要目的是在给定的数字列表 nums 中，找到两个不同的数，使得它们相加的和等于给定的目标值 target，并返回这两个数在列表中的索引。</p>
<h2 id="二twosum-方法内部详细讲解">二、twoSum 方法内部详细讲解</h2>
<h3 id="一获取列表长度">（一）获取列表长度</h3>
<div class="highlight"><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;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>length <span style="color:#f92672">=</span> len(nums)
</span></span></code></pre></div><p>这行代码使用了Python内置的 len 函数来获取输入的数字列表 nums 的长度。</p>
<p>len 函数是一个非常常用的函数，它的作用是返回给定可迭代对象（如列表、字符串、元组等）中元素的数量。</p>
<p>在这里，通过 len(nums) 计算出列表 nums 的长度，并将结果赋值给变量 length。</p>
<p>例如，如果 nums = [2, 7, 11, 15]，那么 length 的值就会是 4。这个长度值在后续的循环遍历列表元素时会起到重要作用。</p>
<h3 id="二嵌套循环遍历列表">（二）嵌套循环遍历列表</h3>
<div class="highlight"><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;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(length):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> j <span style="color:#f92672">in</span> range(length):
</span></span></code></pre></div><p>这里使用了两层嵌套的 for 循环来遍历数字列表 nums。</p>
<ul>
<li><strong>外层循环</strong>：for i in range(length) 这行代码开启了外层循环。</li>
</ul>
<p>range(length) 会生成一个从 0 到 length - 1 的整数序列，在每次循环时，变量 i 会依次被赋予这个序列中的每个值。</p>
<p>例如，当 length = 4 时，i 会依次取值为 0、1、2、3。</p>
<p>外层循环的作用是逐个遍历列表 nums 中的元素，每次循环时，当前被遍历到的元素索引由 i 表示。</p>
<ul>
<li><strong>内层循环</strong>：for j in range(length) 开启了内层循环。</li>
</ul>
<p>同样，它也会生成一个从 0 到 length - 1 的整数序列，每次循环时，变量 j 会依次被赋予这个序列中的每个值。</p>
<p>内层循环的目的是对于外层循环当前遍历到的每个元素（由 i 索引表示），再次遍历列表中的所有元素（由 j 索引表示），以便全面搜索满足特定条件的元素组合。</p>
<h3 id="三寻找满足条件的两个数">（三）寻找满足条件的两个数</h3>
<div class="highlight"><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;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">if</span> nums[i] <span style="color:#f92672">+</span> nums[j] <span style="color:#f92672">==</span> target <span style="color:#f92672">and</span> i<span style="color:#f92672">!=</span> j:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> [i, j]
</span></span></code></pre></div><p>这是整个代码的核心逻辑部分。在两层循环遍历列表的过程中，对于每一对由 i 和 j 索引所指向的元素（即 nums[i] 和 nums[j]），会进行如下条件判断：</p>
<ul>
<li>nums[i] + nums[j] == target：检查当前由 i 和 j 索引指向的两个元素相加是否等于给定的目标值 target。</li>
</ul>
<p>例如，如果 nums = [2, 7, 11, 15]，target = 9，当 i = 0（此时 nums[i] = 2），j = 1（此时 nums[j] = 7）时，nums[i] + nums[j] = 2 + 7 = 9，满足这个条件。</p>
<ul>
<li>i!= j：确保找到的是两个不同的元素，即它们在列表中的索引不同。这是因为如果允许同一个元素被使用两次，可能会得到不符合预期的结果。</li>
</ul>
<p>当这两个条件同时满足时，就说明找到了满足要求的两个数，此时会执行 return [i, j]，将这两个数在列表 nums 中的索引以列表形式返回。例如，在上述例子中，就会返回 [0, 1]，因为 2 的索引是 0，7 的索引是 1。</p>
<h3 id="四未找到满足条件的情况">（四）未找到满足条件的情况</h3>
<div class="highlight"><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;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">return</span> []
</span></span></code></pre></div><p>如果两层嵌套循环全部执行完毕，都没有找到满足 nums[i] + nums[j] == target 且 i!= j 条件的两个数，那么就会执行这行代码，返回一个空列表 []。这表示在给定的数字列表 nums 中，按照当前设定的条件，未能找到合适的两个数相加等于目标值 target。</p>
]]></content:encoded></item></channel></rss>