<?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 Kernel Notes</title><link>https://my-blog.j8465383071.workers.dev/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/</link><description>Recent content in 数据结构与算法 on Kernel Notes</description><generator>Hugo -- 0.147.7</generator><language>zh-cn</language><lastBuildDate>Tue, 18 Aug 2026 17:57:16 +0800</lastBuildDate><atom:link href="https://my-blog.j8465383071.workers.dev/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/index.xml" rel="self" type="application/rss+xml"/><item><title>数据结构与算法 1 总结</title><link>https://my-blog.j8465383071.workers.dev/posts/algorithm/1-summary/</link><pubDate>Tue, 21 Jan 2025 13:55:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/algorithm/1-summary/</guid><description>&lt;ol>
&lt;li>&lt;a href="#1-%E6%A6%82%E8%BF%B0">1 概述&lt;/a>
&lt;ol>
&lt;li>&lt;a href="#1-1-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84">1.1 数据结构&lt;/a>
&lt;ol>
&lt;li>&lt;a href="#%E6%95%B0%E7%BB%84">数组&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%E9%93%BE%E8%A1%A8">链表&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%E4%BA%8C%E5%8F%89%E6%A0%91">二叉树&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%E6%A0%91">树&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%E6%A0%88">栈&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%E9%98%9F%E5%88%97">队列&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%E5%9B%BE">图&lt;/a>&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>&lt;a href="#1-2-%E7%AE%97%E6%B3%95">1.2 算法&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%E9%97%AE%E9%A2%98">问题&lt;/a>&lt;/li>
&lt;li>&lt;a href="#1-2-%E8%A7%A3%E6%B3%95">1.2 解法&lt;/a>&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>&lt;a href="#2-%E6%95%B0%E7%BB%84">2 数组&lt;/a>
&lt;ol>
&lt;li>&lt;a href="#2-1-%E6%89%80%E6%9C%890%E7%A7%BB%E5%8A%A8%E5%88%B0%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%AB%E5%B0%BE">2.1 所有0移动到数组的末尾&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-2-%E7%A7%BB%E9%99%A4%E6%95%B0%E7%BB%84%E6%8C%87%E5%AE%9A%E5%85%83%E7%B4%A0">2.2 移除数组指定元素&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-3-%E7%A7%BB%E9%99%A4%E6%95%B0%E7%BB%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0">2.3 移除数组重复元素&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-4-%E7%A7%BB%E9%99%A4%E6%95%B0%E7%BB%84%E6%95%B0%E9%87%8F%E5%A4%A7%E4%BA%8E2%E7%9A%84%E5%85%83%E7%B4%A0">2.4 移除数组数量大于2的元素&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-5-%E6%95%B0%E7%BB%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%E6%8E%92%E5%BA%8F">2.5 数组重复元素排序&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-6-%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E6%95%B0">2.6 第K个最大数&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-7-%E6%9C%80%E5%A4%A7%E7%9A%84K%E4%B8%AA%E6%95%B0">2.7 最大的K个数&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-8-%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C">2.8 两数之和&lt;/a>&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>&lt;a href="#%E5%8F%82%E8%80%83">参考&lt;/a>&lt;/li>
&lt;/ol>
&lt;h1 id="1-概述">1 概述&lt;/h1>
&lt;h2 id="11-数据结构">1.1 数据结构&lt;/h2>
&lt;h3 id="数组">数组&lt;/h3>
&lt;ul>
&lt;li>排序&lt;/li>
&lt;li>滑动窗口&lt;/li>
&lt;li>去重&lt;/li>
&lt;li>碰撞指针：回文串&lt;/li>
&lt;/ul>
&lt;h3 id="链表">链表&lt;/h3>
&lt;ul>
&lt;li>反转链表&lt;/li>
&lt;/ul>
&lt;h3 id="二叉树">二叉树&lt;/h3>
&lt;ul>
&lt;li>递归&lt;/li>
&lt;/ul>
&lt;h3 id="树">树&lt;/h3>
&lt;ul>
&lt;li>b树：一个节点存多个值
&lt;ul>
&lt;li>降低树高度，结和IO机制，降低IO次数&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>b+树：只有叶子节点存数据
&lt;ul>
&lt;li>高效：中间节点不存数据，可存更多节点&lt;/li>
&lt;li>稳定：查找次数一致&lt;/li>
&lt;li>有序：叶子节点组成链表，方便批量查询&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>b-link树：节点指向右兄弟；每个节点存储High-key
&lt;ul>
&lt;li>并发：根据High-key，并发场景下，可判断节点是否发生分裂，无需加锁&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="栈">栈&lt;/h3>
&lt;h3 id="队列">队列&lt;/h3>
&lt;h3 id="图">图&lt;/h3>
&lt;h2 id="12-算法">1.2 算法&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>动态规划&lt;/p>
&lt;ul>
&lt;li>功能：用表记录所有结果，避免重复计算（斐波那契、最长公共子序列）&lt;/li>
&lt;li>
&lt;h2 id="问题">问题&lt;/h2>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>回溯：枚举 + 剪枝&lt;/p>
&lt;/li>
&lt;li>
&lt;p>分治&lt;/p>
&lt;/li>
&lt;li>
&lt;p>贪心&lt;/p></description></item><item><title>数据结构与算法 2 剑指offer</title><link>https://my-blog.j8465383071.workers.dev/posts/algorithm/2-coding-interview-guide/</link><pubDate>Tue, 21 Jan 2025 13:55:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/algorithm/2-coding-interview-guide/</guid><description>&lt;p>&lt;a href="https://www.nowcoder.com/exam/oj/ta?page=1&amp;amp;tpId=13&amp;amp;type=13">https://www.nowcoder.com/exam/oj/ta?page=1&amp;amp;tpId=13&amp;amp;type=13&lt;/a>&lt;/p>
&lt;h1 id="链表">链表&lt;/h1>
&lt;ol>
&lt;li>
&lt;p>从尾到头打印链表&lt;/p>
&lt;ul>
&lt;li>栈&lt;/li>
&lt;li>递归&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>链表反转&lt;/p>
&lt;ul>
&lt;li>
&lt;p>栈&lt;/p>
&lt;/li>
&lt;li>
&lt;p>双指针&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="m">1&lt;/span> -&amp;gt; &lt;span class="m">2&lt;/span> -&amp;gt; &lt;span class="m">3&lt;/span> -&amp;gt; &lt;span class="m">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">1&lt;/span> &amp;lt;- &lt;span class="m">2&lt;/span> -&amp;gt; &lt;span class="m">3&lt;/span> -&amp;gt; &lt;span class="m">4&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>递归&lt;/p>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>合并两个有序链表&lt;/p>
&lt;ul>
&lt;li>迭代&lt;/li>
&lt;li>递归&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>两个链表的第一个公共结点&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="m">1&lt;/span> -&amp;gt; &lt;span class="m">2&lt;/span> -&amp;gt; &lt;span class="m">3&lt;/span> &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">4&lt;/span> -&amp;gt; &lt;span class="m">5&lt;/span> &lt;span class="p">|&lt;/span>-&amp;gt; &lt;span class="m">6&lt;/span> -&amp;gt; &lt;span class="m">7&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>栈&lt;/li>
&lt;li>双指针：先计算长度，再找起点&lt;/li>
&lt;li>map：第一个cnt &amp;gt; 1的节点&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>链表中环的入口节点&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="m">1&lt;/span> -&amp;gt; &lt;span class="m">2&lt;/span> -&amp;gt; &lt;span class="m">3&lt;/span> -&amp;gt; &lt;span class="m">4&lt;/span> -&amp;gt; &lt;span class="m">5&lt;/span> -&amp;gt; &lt;span class="m">6&lt;/span> -&amp;gt; &lt;span class="m">7&lt;/span> -&amp;gt; &lt;span class="m">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ^ ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 环 相遇（相遇时，快指针多走了1个环）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">快指针：1 &lt;span class="m">2&lt;/span> &lt;span class="m">3&lt;/span> &lt;span class="m">4&lt;/span> &lt;span class="m">5&lt;/span> &lt;span class="m">6&lt;/span> &lt;span class="m">7&lt;/span> &lt;span class="m">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">3&lt;/span> &lt;span class="m">4&lt;/span> &lt;span class="m">5&lt;/span> &lt;span class="m">6&lt;/span> （前后长度一定相等：1 &lt;span class="m">2&lt;/span> 和 &lt;span class="m">7&lt;/span> 8）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">慢指针：1 &lt;span class="m">2&lt;/span> &lt;span class="m">3&lt;/span> &lt;span class="m">4&lt;/span> &lt;span class="m">5&lt;/span> &lt;span class="m">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">快指针：1 &lt;span class="m">2&lt;/span> &lt;span class="m">3&lt;/span> &lt;span class="m">4&lt;/span> &lt;span class="m">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">2&lt;/span> &lt;span class="m">3&lt;/span> &lt;span class="m">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">满指针：1 &lt;span class="m">2&lt;/span> &lt;span class="m">3&lt;/span> &lt;span class="m">4&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>map：第一个cnt &amp;gt; 1的节点&lt;/li>
&lt;li>快慢指针：首先，找到相遇节点；然后，慢指针接着走，新指针从头走（一次一步），再次相遇。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>链表倒数第K个节点&lt;/p>
&lt;ul>
&lt;li>双指针：前指针先走K步&lt;/li>
&lt;li>栈&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>复杂链表的复制&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="m">1&lt;/span> -&amp;gt; &lt;span class="m">2&lt;/span> -&amp;gt; &lt;span class="m">3&lt;/span> -&amp;gt; &lt;span class="m">4&lt;/span> -&amp;gt; &lt;span class="m">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">3&lt;/span> &lt;span class="m">5&lt;/span> * &lt;span class="m">2&lt;/span> *
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">1&lt;/span> _1 &lt;span class="m">2&lt;/span> _2 &lt;span class="m">3&lt;/span> _3 &lt;span class="m">4&lt;/span> _4 &lt;span class="m">5&lt;/span> _5 &lt;span class="c1"># 1. 复制后的新节点放在旧节点之后&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">3&lt;/span> &lt;span class="m">5&lt;/span> * &lt;span class="m">2&lt;/span> * &lt;span class="c1"># 2. 找到旧节点的旧random节点&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> _3 _5 * _2 * &lt;span class="c1"># 3. 旧random节点的下一个节点即为新random节点&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 4. 拆分链表&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>双指针&lt;/li>
&lt;li>哈希表：hash(旧节点) = 新节点&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>删除链表中重复节点&lt;/p></description></item><item><title>数据结构与算法 3 排序</title><link>https://my-blog.j8465383071.workers.dev/posts/algorithm/3-sorting/</link><pubDate>Tue, 21 Jan 2025 13:55:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/algorithm/3-sorting/</guid><description>&lt;h1 id="1-概述">1 概述&lt;/h1>
&lt;h2 id="11-衡量标准">1.1 衡量标准&lt;/h2>
&lt;h2 id="12-分类">1.2 分类&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>算法&lt;/th>
&lt;th>思想&lt;/th>
&lt;th>最好时间复杂度&lt;/th>
&lt;th>最坏时间复杂度&lt;/th>
&lt;th>时间复杂度&lt;/th>
&lt;th>空间复杂度&lt;/th>
&lt;th>稳定性&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>冒泡排序&lt;/td>
&lt;td>比较、交换&lt;/td>
&lt;td>O(n)&lt;/td>
&lt;td>O(n^2)&lt;/td>
&lt;td>O(n^2)&lt;/td>
&lt;td>O(1)&lt;/td>
&lt;td>稳定，值相等不交换&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>插入排序&lt;/td>
&lt;td>比较、移动&lt;/td>
&lt;td>O(n)&lt;/td>
&lt;td>O(n^2)&lt;/td>
&lt;td>O(n^2)&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>选择排序&lt;/td>
&lt;td>比较、交换&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>归并排序&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>快速排序&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>堆排序&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>桶排序&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>计数排序&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>基数排序&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="cm">/* 冒泡排序 */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">sort_bubble&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">arr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">arrlen&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">end&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">tmp&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">end&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">arrlen&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">end&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">arrlen&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">end&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">end&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">++&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">arr&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">arr&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tmp&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">arr&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">];&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">arr&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">arr&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">];&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">arr&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tmp&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>数据结构与算法 4 图</title><link>https://my-blog.j8465383071.workers.dev/posts/algorithm/4-graph/</link><pubDate>Tue, 21 Jan 2025 13:55:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/algorithm/4-graph/</guid><description>&lt;h1 id="1-图的介绍">1 图的介绍&lt;/h1>
&lt;h2 id="11-定义">1.1 定义&lt;/h2>
&lt;p>G = (V, E)&lt;/p>
&lt;ul>
&lt;li>一组节点V&lt;/li>
&lt;li>一组边E&lt;/li>
&lt;li>节点的度：相邻节点的数量&lt;/li>
&lt;li>完备图：所有节点都有n-1个相邻节点，即任意2节点间可达&lt;/li>
&lt;/ul>
&lt;h2 id="12-分类">1.2 分类&lt;/h2>
&lt;h3 id="根据边分类">根据边分类&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>无向图&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">n1 ---- n2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n3 ---- n4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>有向图&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"> --&amp;gt; n2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n1 --&amp;gt; n4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --&amp;gt; n3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>带权有向图&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"> 3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ---&amp;gt; n2 6
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n1 ---&amp;gt; n4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ---&amp;gt; n3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 5
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h3 id="图的性质分类">图的性质分类&lt;/h3>
&lt;ul>
&lt;li>同构图：G和H，通过重新标记G的节点产生H。阶相等，顶点度数相等&lt;/li>
&lt;li>异构图&lt;/li>
&lt;/ul>
&lt;h2 id="13-表示">1.3 表示&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>邻接矩阵&lt;br>
如果节点间ni,nj之间有弧，则[ni, nj] = 1&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"> n1 n2 n3 n4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> +------------+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n1 | 0 1 1 0 |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n2 | 0 0 0 1 |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n3 | 0 0 0 1 |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n4 | 0 0 0 0 |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> +------------+
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>无向图的斜下半部分是多余的&lt;/p></description></item></channel></rss>