{"id":99,"date":"2022-05-14T15:15:50","date_gmt":"2022-05-14T07:15:50","guid":{"rendered":"http:\/\/162.14.82.114\/?p=99"},"modified":"2022-05-16T21:15:51","modified_gmt":"2022-05-16T13:15:51","slug":"%e5%b7%a6%e7%a5%9e%e5%9f%ba%e7%a1%80%e7%8f%ad%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"http:\/\/162.14.82.114\/index.php\/99\/05\/14\/2022\/","title":{"rendered":"\u5de6\u795e\u57fa\u7840\u73ed\u7b14\u8bb0"},"content":{"rendered":"<h1>\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5<\/h1>\n<h2>1.\u65f6\u95f4\u590d\u6742\u5ea6\u4e0e\u6392\u5e8f<\/h2>\n<p>\u65f6\u95f4\u590d\u6742\u5ea6\uff1a\u53ea\u53d6\u7cfb\u6570\u6700\u9ad8\u9879\uff0c\u4e14\u5ffd\u7565\u6700\u9ad8\u9879\u7cfb\u6570\u5269\u4e0b\u7684\u3002<\/p>\n<p>$an_2+bn+c$\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u53ef\u4ee5\u7528$O(n_2)$\u8868\u793a<\/p>\n<h3>\u6392\u5e8f\u65b9\u5f0f<\/h3>\n<h4>\u9009\u62e9\u6392\u5e8f<\/h4>\n<p>\u5148\u5728\u524dn\u4e2a\u6570\u4e2d\u9009\u53d6\u6700\u5c0f\u503c\u6392\u5230\u7b2c\u4e00\u4f4d\uff0c\u518d\u5728\u540e\u9762n-1\u4e2a\u6570\u4e2d\u9009\u53d6\u6700\u5c0f\u6570\u653e\u5230\u8fd9n-1\u4e2a\u6570\u7684\u7b2c\u4e00\u4f4d\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155467.gif'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155467.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code class=\"language-c++\">#include&lt;iostream&gt;\nusing namespace std;\nvoid Select_Sort(int arr*,int n)\n{\n    for(int i = 0;i &lt; n;i++){\n        int min = i;\n        for(int j = i;j &lt; n;j++){\n            if(arr[min] &gt; arr[j]){\n                min = j;\n            }\n        }\n        if(min != i){\n            swap(arr[i],arr[min]);\n        }\n    }\n\n}<\/code><\/pre>\n<pre><code class=\"language-java\">package class01;\nimport java.util.Arrays;\npublic class Code01_SelectionSort{\n    public static void selectionSort(int[] arr){\n        if(arr == null||arr.length &lt; 2){\n            return 0;\n        }\n        for(int i = 0,i &lt; arr.length - 1; i++){\n            int minIndex = i;\n            for(int j = i+1,j&lt;arr.length,j++){\n            minIndex = arr[j] &lt; arr[minIndex] ? j : minIndex;\/\/\u6b64\u65f6\u51fa\u7528\u5230\u4e86\u4e09\u76ee\u8fd0\u7b97\u7b26[\u5e03\u5c14\u8868\u8fbe\u5f0f ? \u53d6\u771f\u65f6\u53d6\u503c : \u53d6\u5047\u65f6\u53d6\u503c]\n            }\n            swap(arr, i, minIndex);\n        }\n    }\n    public static void swap(int[] arr,int i,int j){\n        int tmp = arr[i];\n        arr[i] = arr[j];\n        arr[j] = tmp;\n    }\n}<\/code><\/pre>\n<h4>\u5192\u6ce1\u6392\u5e8f<\/h4>\n<p>\u5148\u5bf9\u4ece0\u5230n-1\u9879\u8fdb\u884c\u76f8\u90bb\u4e24\u9879\u7684\u5927\u5c0f\u6392\u5e8f\uff0c\u518d\u5bf9\u4ece0\u5230n-2\u9879\u8fdb\u884c\u76f8\u90bb\u5927\u5c0f\u6392\u5e8f\uff0c\u4ee5\u6b64\u7c7b\u63a8\uff0c\u6700\u7ec8\u6392\u5e8f\u5b8c\u6210\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155469.gif'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155469.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code class=\"language-java\">public class Bubble_Sort{\n    public static void bubbleSort(int[] arr){\n        if(arr == null || arr.length == 1) return 0;\n        for(int i = 0;i &lt; arr.length - 1;i++){\n            boolean isSorted = ture;\n            for(int j = 0;j &lt; arr.length - 1 - i;j++){\n                if(arr[j] &gt; arr[j + 1]){\n                    int temp = arr[j];  \n                    arr[j] = arr[j + 1];\n                    arr[j + 1] = temp;\n                    isSorted = false;\n                }\n            }\n        if(isSorted) return;    \n        System.out.print(&quot;\u7b2c&quot;+(i+1)+&quot;\u8d9f\uff1a&quot;)\uff1b\n        print(arr);\n        }\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">package class01;\nimport java.util.Arrays;\npublic class Code02_BubbleSort{\n    public static void bubbleSort(int[] arr){\n        if(arr = null||arr.length &lt; 2){\n            return;\n        }\n        for(int n = arr.length - 1,n &gt; 0,n--){\n            for(int i = 0,i &lt; e,i++){\n                if(arr[i] &gt; arr[i+1]){\n                    swap(arr,i,i + 1);\n                } \n            }\n        }\n    }\n    public static void swap(int[] arr,int i,int j){\n        arr[i]=arr[i]^arr[j];\n        arr[j]=arr[i]^arr[j];\n        arr[i]=arr[i]^arr[j];\n    }\n}<\/code><\/pre>\n<p><code>^ \u5f02\u6216\u8fd0\u7b97<\/code>\uff08\u4e0d\u540c\u4e3a1\uff0c\u76f8\u540c\u4e3a0\uff09<\/p>\n<p>\u76f8\u5173\u6027\u8d28\uff1a<\/p>\n<pre><code>0 ^ N = N\n\nN ^ N = N\n\n\u6ee1\u8db3\u4ea4\u6362\u5f8b\u548c\u7ed3\u5408\u7387\n\n\u4e00\u7fa4\u6570\u5f02\u6216\u5148\u540e\u987a\u5e8f\u4e0d\u5f71\u54cd\u7ed3\u679c\n\n\u6ce8\u610f\uff1a\u4ea6\u6216\u8fd0\u7b97\u4e2d\u7684\u4e24\u4e2a\u6570\u5b57\u4f4d\u7f6e\u4e0d\u80fd\u6307\u5411\u540c\u4e00\u7247\u5185\u5b58\u533a\u57df<\/code><\/pre>\n<p><code>\u7b97\u6cd5\u9898<\/code><\/p>\n<pre><code class=\"language-java\">\/\/\u6570\u7ec4\u5185\u67d0\u4e2a\u6570\u51fa\u73b0\u4e86\u5947\u6570\u6b21\uff0c\u5176\u4ed6\u6570\u5b57\u51fa\u73b0\u4e86\u5076\u6570\u6b21\uff0c\u6c42\u8be5\u51fa\u73b0\u4e86\u57fa\u6570\u6b21\u7684\u6570\npublic static void print0ddTimesNum1(int[] arr){\n    int eor = 0;\n    for(int cur : arr){\n        eor ^= cur;\n    }\n    System.out.println(eor);    \n}<\/code><\/pre>\n<p>\u6570\u7ec4\u5185\u67d0\u4e24\u4e2a\u6570\u51fa\u73b0\u4e86\u5947\u6570\u6b21\uff0c\u5176\u4ed6\u6570\u5b57\u51fa\u73b0\u5076\u6570\u6b21\uff0c\u6c42\u8fd9\u4e24\u4e2a\u6570<\/p>\n<pre><code class=\"language-java\">public static void print0ddTimesNum2(int[] arr){\n    int eor = 0;\n    for(int i = 1,i &lt; arr.length;i++){\n        eor ^arr[i];\n    }\n    int rightone = eor &amp; (~eor + 1);\n    int onlyOne = 0;    \/\/onlyOne\u5c31\u662feor&#039;\n    for (int cur : arr){\n        if((cur &amp; rightOne) == 0){\n            onlyOne ^= cur;\n        }\n    }\n    System.out.println(onlyOne + &quot; &quot; +(eor ^ onlyOne));\n}<\/code><\/pre>\n<p><code>\u4e24\u4e2a\u5947\u6570\u6b21\u6570\uff0c\u5148\u5f02\u6216\u8fd0\u7b97\u83b7\u5f97\u7b2c\u4e00\u4e2a\u5947\u6570\u6b21\u6570\uff0c\u518d eor ^ eor &#039; \u5373\u53ef\u5f97\u5230\u7b2c\u4e8c\u4e2a\u5947\u6570\u6b21\u6570<\/code><\/p>\n<h4>\u63d2\u5165\u6392\u5e8f<\/h4>\n<p>\u5148\u770b 0\\~0\u4e0a\u662f\u5426\u6709\u5e8f\uff0c\u518d\u770b 0\\~1\u4e0a\u662f\u5426\u6709\u5e8f\uff0c\u6709\u5e8f\u5219\u4e0d\u53d8\uff0c\u65e0\u5e8f\u5219\u6392\u5e8f\u4ee5\u6b64\u7c7b\u63a8\u5230\u6700\u540e 0\\~n\u3002\u8be5\u7b97\u6cd5\u4e0e\u6240\u7ed9\u6570\u636e\u7684\u4e0d\u540c\u590d\u6742\u5ea6\u4e5f\u4e0d\u540c\u3002<\/p>\n<p>\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO($N^2$)\uff0c\u989d\u5916\u7a7a\u95f4\u590d\u6742\u5ea6\u4e3aO(1)\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155471.gif'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155471.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom: 80%;\" \/><\/div><\/p>\n<pre><code class=\"language-java\">public class Code03_InsertionSort{\n    public static void insortionSort(int[] arr){\n        if(arr == null||arr.length &lt; 2){\n            return;\n        }\n        for(int i = 1;i &lt; arr.length;i++){\n            for(int j = i - 1;j &gt;= 0 &amp;&amp; arr[j] &gt; arr[j+1];j--){\n                swap(arr,j,j+1);\n            }\n        }\n    }\n    public static void swap(int[] arr,int i,int j){\n        arr[i] = arr[i] ^ arr[j];\n        arr[j] = arr[i] ^ arr[j];\n        arr[i] = arr[i] ^ arr[j];\n    }\n}<\/code><\/pre>\n<h4>\u4e8c\u5206\u6cd5\u67e5\u627e<\/h4>\n<p>\u4e8c\u5206\u6cd5\u8981\u5728\u5df2\u7ecf\u6392\u597d\u5e8f\u7684\u6570\u7ec4\u4e2d\u8fdb\u884c\u67e5\u627e\uff0c\u5148\u548c\u4e2d\u95f4\u6570\u6bd4\u8f83\u518d\u4e0e\u4e0b\u4e00\u6bb5\u7684\u4e2d\u95f4\u6570\u6bd4\u8f83\uff0c\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a$log_2N$\u3002<\/p>\n<p>\u4e8c\u5206\u6cd5\u8fd8\u53ef\u4ee5\u627e\u5927\u4e8e\u7b49\u4e8e\u67d0\u6570\u6700\u5de6\u4fa7\u7684\u6570\u5b57\u548c\u5c0f\u4e8e\u7b49\u4e8e\u67d0\u6570\u6700\u53f3\u4fa7\u7684\u4f4d\u7f6e\u90fd\u53ef\u4ee5\u3002<\/p>\n<p><code>\u7b97\u6cd5\u9898<\/code><\/p>\n<p>\u5728\u4e00\u4e2a\u6570\u7ec4arr\u4e2d\uff0carr\u65e0\u5e8f\uff0c\u4e14\u4efb\u610f\u4e24\u4e2a\u76f8\u90bb\u7684\u6570\u4e0d\u76f8\u7b49\uff0c\u5b9a\u4e49\u5c40\u90e8\u6700\u5c0f\uff0c\u53ea\u6c42\u4e00\u4e2a\u5c40\u90e8\u6700\u5c0f\uff0c\u95ee\u662f\u5426\u5b58\u5728\u4e00\u4e2a\u7b97\u6cd5\u590d\u6742\u5ea6\u53ef\u4ee5\u5c0f\u4e8eO(n)\u3002<\/p>\n<p><code>\u89e3\u6cd5<\/code>\uff1a<\/p>\n<p>\u82e5 0\\~1\u4e2d\u4e0eN-2\\~N-1\u4e2d\u8d8b\u52bf\u4e0d\u540c\u5219\u518d\u6570\u7ec4\u4e2d\u5fc5\u5b9a\u5b58\u5728\u5c40\u90e8\u6700\u5c0f\uff0c\u4e8c\u5206\u6cd5\u6c42\u4e2d\u95f4\u4e24\u4e2a\u6570\u7684\u5927\u5c0f\u5173\u7cfb\uff0c\u548c\u54ea\u8fb9\u76f8\u540c\u5c31\u5f80\u53cd\u65b9\u5411\u7ee7\u7eed\u4e8c\u5206\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155472.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155472.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210927204519064\" style=\"zoom: 33%;\" \/><\/div><\/p>\n<h4>\u5e0c\u5c14\u6392\u5e8f<\/h4>\n<p>\u5e0c\u5c14\u6392\u5e8f\uff0c\u901a\u8fc7\u589e\u91cf(gap)\u5c06\u5143\u7d20\u4e24\u4e24\u5206\u7ec4\uff0c\u5bf9\u6bcf\u7ec4\u4f7f\u7528\u76f4\u63a5\u63d2\u5165\u6392\u5e8f\u7b97\u6cd5\u6392\u5e8f\uff1b\u589e\u91cf(gap)\u9010\u6e10\u51cf\u5c11\uff0c\u5f53\u589e\u91cf(gap)\u51cf\u81f31\u65f6\uff0c\u6574\u4e2a\u6570\u636e\u6070\u88ab\u5206\u6210\u4e00\u7ec4\uff0c\u6700\u540e\u8fdb\u884c\u4e00\u6b21\u63d2\u5165\u6392\u5e8f\uff0c\u6574\u4e2a\u6570\u7ec4\u5c31\u6709\u5e8f\u4e86\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155473.webp'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155473.webp\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155474.webp'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155474.webp\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155475.webp'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155475.webp\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u7b2c\u4e00\u6b21:gap = 9\/2 = 4\uff0c\u6bcf\u4e2a\u5143\u7d20\u548c\u540e\u9762\u7684\u5143\u7d20\u4e4b\u95f4\u95f4\u96944\uff0c\u5143\u7d20\u88ab\u5206\u62104\u7ec4\u3002\u5176\u4e2d\u5143\u7d207, 5, 6\u5206\u6210\u4e00\u7ec4\uff0c\u5143\u7d203,4\u5206\u6210\u4e00\u7ec4\uff0c\u5143\u7d201, 2\u5206\u6210\u4e00\u7ec4\uff0c\u5143\u7d209,8\u5206\u6210\u4e00\u7ec4\uff0c\u6548\u679c\u5982\u4e0b\u56fe\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic2.zhimg.com\/80\/v2-6cb948b4215fd7f35dc8b48a4b803251_1440w.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic2.zhimg.com\/80\/v2-6cb948b4215fd7f35dc8b48a4b803251_1440w.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u7b2c\u4e8c\u6b21:gap = 4\/2 = 2\uff0c\u6bcf\u4e2a\u5143\u7d20\u548c\u540e\u9762\u7684\u5143\u7d20\u4e4b\u95f4\u95f4\u96942\uff0c\u5143\u7d20\u88ab\u5206\u62102\u7ec4\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic3.zhimg.com\/80\/v2-c1328359469903077d8a268aa63a2966_1440w.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic3.zhimg.com\/80\/v2-c1328359469903077d8a268aa63a2966_1440w.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u7b2c\u4e09\u6b21:gap = 2\/2 = 1\uff0c\u6bcf\u4e2a\u5143\u7d20\u548c\u540e\u9762\u7684\u5143\u7d20\u4e4b\u95f4\u95f4\u96941\uff0c\u5143\u7d20\u88ab\u5206\u62101\u7ec4\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic4.zhimg.com\/80\/v2-bbd72d1ab15805f2f2ee4e21f05fed43_1440w.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic4.zhimg.com\/80\/v2-bbd72d1ab15805f2f2ee4e21f05fed43_1440w.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code class=\"language-java\">public class ShellSortTest2 {\n    public static void main(String[] args) {\n        int[] arr = new int[] {7, 3, 1, 9, 5, 4, 2, 8, 6};\n        shellSort(arr);\n    }\n\n    public static void shellSort(int[] arr) {\n        \/\/ \u589e\u91cfgap,\u901a\u8fc7gap\u6765\u5212\u5206\u51fa\u4e0d\u540c\u7684\u5b50\u5e8f\u5217,gap\u4e0d\u65ad\u51cf\u5c11,\u5212\u5206\u7684\u5b50\u5e8f\u5217\u66f4\u591a\n        for (int gap = arr.length \/ 2; gap &gt; 0; gap \/= 2) { \/\/ \u5faa\u73af\u5f97\u5230\u4e0d\u540c\u7684gap\uff0cgap = 4, 2, 1\n            System.out.println(&quot;gap: &quot; + gap);\n\n            for (int i = gap; i &lt; arr.length; i++) { \/\/ \u6bcf\u7ec4\u4f7f\u7528\u63d2\u5165\u6392\u5e8f\n                for (int j = i; j-gap &gt;= 0; j -= gap) {\n                    if (arr[j-gap] &gt; arr[j]) {\n                        swap(arr, j-gap, j);\n                        System.out.print(&quot;\\t\u4ea4\u6362: &quot; + arr[j-gap] + &quot;\u548c&quot; + arr[j]);\n                        System.out.println(Arrays.toString(arr));\n                    }\n                }\n            }\n        }\n    }\n\n    public static void swap(int[] arr, int start, int end) {\n        int temp = arr[start];\n        arr[start] = arr[end];\n        arr[end] = temp;\n    }\n}<\/code><\/pre>\n<p>\u6267\u884c\u6548\u679c\uff1a<\/p>\n<pre><code class=\"language-text\">gap: 4\n    \u4ea4\u6362: 5\u548c7[5, 3, 1, 9, 7, 4, 2, 8, 6]\n    \u4ea4\u6362: 8\u548c9[5, 3, 1, 8, 7, 4, 2, 9, 6]\n    \u4ea4\u6362: 6\u548c7[5, 3, 1, 8, 6, 4, 2, 9, 7]\ngap: 2\n    \u4ea4\u6362: 1\u548c5[1, 3, 5, 8, 6, 4, 2, 9, 7]\n    \u4ea4\u6362: 4\u548c8[1, 3, 5, 4, 6, 8, 2, 9, 7]\n    \u4ea4\u6362: 2\u548c6[1, 3, 5, 4, 2, 8, 6, 9, 7]\n    \u4ea4\u6362: 2\u548c5[1, 3, 2, 4, 5, 8, 6, 9, 7]\ngap: 1\n    \u4ea4\u6362: 2\u548c3[1, 2, 3, 4, 5, 8, 6, 9, 7]\n    \u4ea4\u6362: 6\u548c8[1, 2, 3, 4, 5, 6, 8, 9, 7]\n    \u4ea4\u6362: 7\u548c9[1, 2, 3, 4, 5, 6, 8, 7, 9]\n    \u4ea4\u6362: 7\u548c8[1, 2, 3, 4, 5, 6, 7, 8, 9]<\/code><\/pre>\n<h5><strong>\u603b\u7ed3<\/strong><\/h5>\n<p>\u5e0c\u5c14\u6392\u5e8f\uff0c\u662f\u76f4\u63a5\u63d2\u5165\u6392\u5e8f\u7b97\u6cd5\u7684\u4e00\u79cd\u66f4\u9ad8\u6548\u7684\u6539\u8fdb\u7248\u672c\u3002\u901a\u8fc7\u589e\u91cf(gap)\u5c06\u5143\u7d20\u8fdb\u884c\u5206\u7ec4\uff0c\u5bf9\u6bcf\u7ec4\u4f7f\u7528\u76f4\u63a5\u63d2\u5165\u6392\u5e8f\u7b97\u6cd5\u6392\u5e8f\uff1b\u589e\u91cf(gap)\u9010\u6e10\u51cf\u5c11\uff0c\u5f53\u589e\u91cf(gap)\u51cf\u81f31\u65f6\uff0c\u6574\u4e2a\u6570\u636e\u6070\u88ab\u5206\u6210\u4e00\u7ec4\uff0c\u6700\u540e\u8fdb\u884c\u4e00\u6b21\u63d2\u5165\u6392\u5e8f\u3002<\/p>\n<h4>\u5bf9\u6570\u5668<\/h4>\n<p>1\u3001\u751f\u6210\u968f\u673a\u6837\u672c\u4ea7\u751f\u5668\u3002<\/p>\n<p>2\u3001\u5c06\u4e24\u4e2a\u65b9\u6cd5\u540c\u65f6\u8f93\u5165\u6570\u636e\uff0c\u6bd4\u8f83\u4e24\u4e2a\u65b9\u6cd5\u7684\u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-java\">public static void comparator(int[] arr){\n    Arrays.sort(arr);\n}<\/code><\/pre>\n<p>java\u751f\u6210\u968f\u673a\u6570\u7684\u51fd\u6570<\/p>\n<pre><code class=\"language-java\">\/\/\u81ea\u5df1\u6253\u7684\npublic static int[] generateRandomArray(int maxSize,int maxValue){\n    \/\/(int)(Math.random() * N) \u2014\u2014&gt;[0 ~ N-1]\u6240\u6709\u7684\u6574\u6570\uff0c\u7b49\u6982\u7387\u8fd4\u56de\u4e00\u4e2a\n    int[] arr = new int[(int)((maxSize + 1) * Math.random())];\n    for (int i = 0;i &lt; arr.length;i++){\n        arr[i] = (int)((maxValue + 1) * Math.random()) - (int)(maxValue * Math.random());\n    }\n    return arr;\n}\n\/\/\u7f51\u4e0a\u7684\n\/\/\u968f\u673a\u6570\u7ec4\u7684\u751f\u6210\n\/\/Math.random() [0,1) double\n\/\/Math.random() *A -&gt;[0,A) double A-&gt;int\npublic static int []generateRandomArray(int maxSize,int maxValue)\n{ \n    int []arr=new int[(int)(maxSize+1)*Math.random())];\n    for(int i=0;i&lt;arr.length;i++)\n    {\n        arr[i]=(int)((maxValue+1)*Math.random())-(int)(maxValue*Math.random)\n    }\n    return arr;\n\n}\n\/\/\u590d\u5236 \u8fd4\u56de\u6570\u7ec4\npublic static int[] copyArray(int[] arr)\n{\n    if(arr==null)\n    {\n        return null;\n    }\n    int []res=new int[arr.length];\n    for(int i=0;i&lt;arr.length;i++)\n    {\n        res[i]=arr[i];\n    }\n    return res;\n}<\/code><\/pre>\n<p>\u6d4b\u8bd5\u5668\u6848\u4f8b<\/p>\n<pre><code class=\"language-java\">\/\/for test\nstatic void main()\n{    \n     int testTime=2000;\/\/\u6d4b\u8bd5\u6b21\u6570    \n     int maxSize=100;\/\/\u6570\u7ec4\u5927\u5c0f    \n     int maxValue=100;\/\/\u6570\u7ec4\u503c\u5927\u5c0f    \n     boolean succeed=true;\/\/\u521d\u59cb\u503c \u4e0d\u6210\u529f    \n     for(int i=0;i&lt;testTime;i++)   \n     {        \n       int []arr1=generateRandomArray(maxSize,maxValue);\/\/\u4ea7\u751f\u968f\u673a\u6570\u7ec4        \n       int []arr2=copyArray(arr1);                      \/\/\u62f7\u8d1d\u751f\u6210\u65b0\u6570\u7ec4         \n       selectionSort(arr1);                             \/\/\u88ab\u6d4b\u9ed1\u76d2\u51fd\u6570         \n       comparator(arr2);                                \/\/\u7edd\u5bf9\u6b63\u786e\u51fd\u6570         \n       if(!isEqual(arr1,arr2))                          \/\/\u5bf9\u6bd4\u7ed3\u679c        \n        {             \n           succeed=false;                           \/\/\u53ea\u8981\u6709\u4e00\u6b21\u5931\u8d25\u5c31\u6253\u5370             \n           printArray(arr1);             \n           printArray(arr2);             \n           break;        \n         }       \n      }    \n}<\/code><\/pre>\n<h2>2.\u8ba4\u8bc6O(NlogN)\u7684\u6392\u5e8f<\/h2>\n<p>\u53d6\u4e2d\u70b9\u7684\u65b9\u6cd5\uff1a<br \/>\n$$<br \/>\nmid = \\frac{L+R}{2}<br \/>\n$$<br \/>\n\u4f46\u662f\u8fd9\u79cd\u65b9\u6cd5\u4e0d\u4e00\u5b9a\u51c6\u786e\uff0c\u5982\u679c\u5728\u6570\u7ec4\u4e2dR\u8db3\u591f\u7684\u5927\uff0c\u53ef\u80fd\u4f1a\u9020\u6210\u6ea2\u51fa\uff0c\u4ece\u800cmid\u53d6\u8d1f\u6570\u3002<\/p>\n<p>\u6545\u91c7\u7528\u4ee5\u4e0b\u65b9\u6cd5\uff1a<br \/>\n$$<br \/>\nmid =   L + \\frac{R-L}{2}<br \/>\n$$<br \/>\n\u540c\u65f6\u4e3a\u4e86\u63d0\u9ad8\u8fd0\u7b97\u6548\u7387\u5f15\u5165\u4f4d\u8fd0\u7b97\u7b26<code>&gt;&gt;<\/code><br \/>\n$$<br \/>\nmid = L + ((R-L)&gt;&gt;1)<br \/>\n$$<\/p>\n<pre><code>\u4f4d\u8fd0\u7b97\u7b26 &gt;&gt; or &lt;&lt;\n\u5c06\u5de6\u8fb9\u7684\u6570\u8f6c\u6362\u6210\u4e8c\u8fdb\u5236\u6570\uff0c\u518d\u6839\u636e\u7b26\u53f7\u65b9\u5411\u5411\u5de6\u6216\u5411\u53f3\u79fb\u52a8\u4e00\u5b9a\u4f4d\u6570\uff0c\u8fd9\u4e2a\u4f4d\u6570\u6307\u7684\u662f\u7b26\u53f7\u53f3\u8fb9\u7684\u503c\u3002<\/code><\/pre>\n<h3>\u9012\u5f52\u6cd5\u6c42\u6700\u5927\u503c<\/h3>\n<pre><code class=\"language-java\">public class Code08_GetMax{\n    public static int getMax(int[] arr){\n        return process(arr, 0, arr.length - 1);\n    }\n    public static int process(int[] arr, int L, int R){\n        if(L == R){\n            return arr[L];\n        }\n        int mid = L + ((R - L) &gt;&gt; 1);\n        int leftMax = process(arr, L, mid);\n        int rightMax = process(arr, mid + 1, R);\n        return Math.max(leftMax, rightMax);\n    }\n}<\/code><\/pre>\n<h3>master\u516c\u5f0f\u2014\u2014\u89e3\u9012\u5f52\u7a0b\u5e8f\u590d\u6742\u5ea6\u7684\u65b9\u6cd5<\/h3>\n<p>$$<br \/>\nmaster\\;\u516c\u5f0f\uff1aT(N) = a \\times T(\\frac{N}{b}) +O(N^d)\\<br \/>\n\u5173\u4e8e\\,master\\,\u516c\u5f0f\u6709\u4ee5\u4e0b\u7ed3\u8bba\uff1a\\<br \/>\n\u82e5\\;log_ba&lt;d,\u5219\u8be5\u9012\u5f52\u590d\u6742\u5ea6\u4e3a\\;O(N^d)\\<br \/>\n\u82e5\\;log_ba&gt;d,\u5219\u8be5\u9012\u5f52\u590d\u6742\u5ea6\u4e3a\\;O(N^{log_ba})\\<br \/>\n\u82e5\\;log_ba=d,\u5219\u8be5\u9012\u5f52\u590d\u6742\u5ea6\u4e3a\\;O(N^d \\times logN)<br \/>\n$$<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155476.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155476.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210928193206427\" style=\"zoom: 33%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155477.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155477.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210928193416228\" style=\"zoom:33%;\" \/><\/div><\/p>\n<h3>\u5f52\u5e76\u6392\u5e8f<\/h3>\n<p>\u5de6\u8fb9\u6392\u597d\u5e8f\uff0c\u53f3\u8fb9\u6392\u597d\u5e8f\u8ba9\u6574\u4f53\u6709\u5e8f\uff0c\u65f6\u95f4\u590d\u6742\u5ea6\u7531 master \u516c\u5f0f\u6c42\u51fa\uff0c\u4e3a$O(N\\times logN)$\uff0c\u989d\u5916\u7a7a\u95f4\u590d\u6742\u5ea6\u4e3a$O(N)$\u3002<\/p>\n<p>\u5728\u989d\u5916\u4e00\u4e2a\u7a7a\u95f4\u5185\uff0c\u5de6\u53f3\u4f9d\u6b21\u76f8\u540c\u5e8f\u53f7\u7684\u6570\u5b57\u6bd4\u8f83\uff0c\u8c01\u5c0f\u5148\u62f7\u8d1d\u8c01\u5230\u65b0\u7a7a\u95f4\u5185\u3002\u6700\u7ec8\u518d\u62f7\u8d1d\u56de\u539f\u6570\u7ec4\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/images2017.cnblogs.com\/blog\/849589\/201710\/849589-20171015230557043-37375010.gif'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/images2017.cnblogs.com\/blog\/849589\/201710\/849589-20171015230557043-37375010.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:80%;\" \/><\/div><\/p>\n<pre><code class=\"language-java\">\/\/\u5f52\u5e76\u6392\u5e8f\u4ee3\u7801\u5b9e\u73b0\nimport java.util.Arrays;\npublic class Code01_MergeSort{\n    public static void mergeSort(int[] arr){\n        if(arr = null || arr.length &lt; 2){\n            return;\n        }\n        process(arr, 0, arr.length - 1);\n    }\n    public static void process(int[] arr, int L, int R){\n        if(L == R){\n            return;\n        }\n        int mid = L + ((R - L) &gt;&gt; 1);\n        process(arr, L, mid);\n        process(arr, mid + 1, R);\n        merge(arr, L, mid, R);\n    }\n    public static void merge(int[] arr, int L, int M, int R){\n        int[] help = new int[R - L + 1];\n        int i =0;\n        int p1 = L;\n        int p2 = M + 1;\n        while(p1 &lt;= M &amp;&amp; p2 &lt;= R){\n            help[i++] = arr[p1] &lt;=arr[p2] ? arr[p1] :arr[p2];\n        }\n        while(p1 &lt;= M){\n            help[i++] = arr[p1++];\n        }\n        while(p2 &lt;= R){\n            help[i++] = arr[p2++];\n        }\n        for (i = 0; i &lt; help.length; i++){\n            arr[L + i] = help[i++];\n        }\n    }\n}<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155478.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155478.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210928195655821\" style=\"zoom:33%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155479.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155479.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210928200509527\" style=\"zoom: 25%;\" \/><\/div><\/p>\n<p>\u4e4b\u524d\u7684\u6392\u5e8f\u5728\u6bd4\u8f83\u4ee5\u540e\u4e22\u5f03\u4e86\u5927\u91cf\u7684\u6bd4\u8f83\u6570\u636e\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155480.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155480.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210928204147518\" style=\"zoom: 50%;\" \/><\/div> <\/p>\n<p>\u7b28\u65b9\u6cd5\u662f\u66b4\u529b\u6c42\u89e3\uff0c\u8f83\u597d\u7684\u7b97\u6cd5\u662f\u8fd0\u7528\u5f52\u5e76\u6392\u5e8f\u8fdb\u884c\u8ba1\u7b97\u3002\u5982\u56fe\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155481.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155481.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:67%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155481.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155481.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom: 67%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155481.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155481.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:67%;\" \/><\/div><\/p>\n<pre><code class=\"language-java\">\/\/\u5b9e\u73b0\u4ee3\u7801\nclass test  \n{   public static int smallSum(int[] arr) {\n    if (arr == null || arr.length &lt; 2) {\n        return 0;\n    }\n    return mergeSort(arr, 0, arr.length - 1);\n}\n\n public static int mergeSort(int[] arr, int l, int r) {\n     if (l == r) {\n         return 0;\n     }\n     int mid = l + ((r - l) &gt;&gt; 1);\n     return mergeSort(arr, l, mid) + mergeSort(arr, mid + 1, r) + merge(arr, l, mid, r);\n }\n\n public static int merge(int[] arr, int l, int m, int r) {\n     int[] help = new int[r - l + 1];\n     int i = 0;\n     int p1 = l;\n     int p2 = m + 1;\n     int res = 0;\n     while (p1 &lt;= m &amp;&amp; p2 &lt;= r) {\n         res += arr[p1] &lt; arr[p2] ? (r - p2 + 1) * arr[p1] : 0;\n         help[i++] = arr[p1] &lt; arr[p2] ? arr[p1++] : arr[p2++];\n     }\n     while (p1 &lt;= m) {\n         help[i++] = arr[p1++];\n     }\n     while (p2 &lt;= r) {\n         help[i++] = arr[p2++];\n     }\n     for (i = 0; i &lt; help.length; i++) {\n         arr[l + i] = help[i];\n     }\n     return res;\n }\n public static void main (String[] args) throws java.lang.Exception\n {\n     int[] arr = { 1,2,3};\n     System.out.println(smallSum(arr));\n }\n}<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155482.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155482.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210928212902737\" style=\"zoom:67%;\" \/><\/div><\/p>\n<p>\u95ee\u9898\u4e00\uff1a\u5206\u4e24\u6b65\uff1a<\/p>\n<pre><code>[i] &lt;= num , [i] \u548c&lt;=\u8fb9\u754c\u7684\u4e0b\u4e00\u4e2a\u6570\u5b57\u4ea4\u6362\uff0c\u5c0f\u4e8e\u533a\u57df\u53f3\u79fb,i++;\n[i] &gt; num , i++ <\/code><\/pre>\n<p>\u95ee\u9898\u4e00\u884d\u751f\uff1a\u589e\u52a0\u7b49\u4e8e\u533a\u57df<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155483.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155483.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210928213524132\" style=\"zoom:33%;\" \/><\/div><\/p>\n<h3>\u5feb\u901f\u6392\u5217<\/h3>\n<p>\u9009\u62e9\u6700\u540e\u4e00\u4e2a\u6570\uff0c\u5c06\u6570\u7ec4\u5212\u5206\u6210\u4e24\u90e8\u5206\uff0c\u518d\u5206\u522b\u5bf9\u4e24\u90e8\u5206\u7684\u6700\u540e\u4e00\u4e2a\u6570\u91cd\u590d\u8fdb\u884c\u4e0a\u8ff0\u6b65\u9aa4\u3002\u5feb\u901f\u6392\u5e8f\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u6700\u5dee\u4e3aO(N)\uff0c\u7a7a\u95f4\u590d\u6742\u5ea6\u6700\u5dee\u4e3aO(N)\uff0c\u6309\u7167\u6982\u7387\u76f8\u5173\u77e5\u8bc6\uff0c\u5f97\u51fa\u5feb\u901f\u6392\u5e8f\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(NlogN)\uff0c\u7a7a\u95f4\u590d\u6742\u5ea6\u662fO(logN)\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/images2017.cnblogs.com\/blog\/849589\/201710\/849589-20171015230936371-1413523412.gif'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/images2017.cnblogs.com\/blog\/849589\/201710\/849589-20171015230936371-1413523412.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:80%;\" \/><\/div><\/p>\n<pre><code class=\"language-text\">\u5feb\u901f\u6392\u5e8f\u4f7f\u7528\u5206\u6cbb\u6cd5\uff08Divide and conquer\uff09\u7b56\u7565\u6765\u628a\u4e00\u4e2a\u5e8f\u5217\uff08list\uff09\u5206\u4e3a\u4e24\u4e2a\u5b50\u5e8f\u5217\uff08sub-lists\uff09\u3002\n\u2460 \u4ece\u6570\u5217\u4e2d\u6311\u51fa\u4e00\u4e2a\u5143\u7d20\uff0c\u79f0\u4e3a \u201c\u57fa\u51c6\u201d\uff08pivot\uff09\uff0c\n\u2461 \u91cd\u65b0\u6392\u5e8f\u6570\u5217\uff0c\u6240\u6709\u5143\u7d20\u6bd4\u57fa\u51c6\u503c\u5c0f\u7684\u6446\u653e\u5728\u57fa\u51c6\u524d\u9762\uff0c\u6240\u6709\u5143\u7d20\u6bd4\u57fa\u51c6\u503c\u5927\u7684\u6446\u5728\u57fa\u51c6\u7684\u540e\u9762\uff08\u76f8\u540c\u7684\u6570\u53ef\u4ee5\u5230\u4efb\u4e00\u8fb9\uff09\u3002\u5728\u8fd9\u4e2a\u5206\u533a\u9000\u51fa\u4e4b\u540e\uff0c\u8be5\u57fa\u51c6\u5c31\u5904\u4e8e\u6570\u5217\u7684   \u4e2d\u95f4\u4f4d\u7f6e\u3002\u8fd9\u4e2a\u79f0\u4e3a\u5206\u533a\uff08partition\uff09\u64cd\u4f5c\u3002\n\u2462 \u9012\u5f52\u5730\uff08recursive\uff09\u628a\u5c0f\u4e8e\u57fa\u51c6\u503c\u5143\u7d20\u7684\u5b50\u6570\u5217\u548c\u5927\u4e8e\u57fa\u51c6\u503c\u5143\u7d20\u7684\u5b50\u6570\u5217\u6392\u5e8f\u3002\n\u9012\u5f52\u5230\u6700\u5e95\u90e8\u65f6\uff0c\u6570\u5217\u7684\u5927\u5c0f\u662f\u96f6\u6216\u4e00\uff0c\u4e5f\u5c31\u662f\u5df2\u7ecf\u6392\u5e8f\u597d\u4e86\u3002\u8fd9\u4e2a\u7b97\u6cd5\u4e00\u5b9a\u4f1a\u7ed3\u675f\uff0c\u56e0\u4e3a\u5728\u6bcf\u6b21\u7684\u8fed\u4ee3\uff08iteration\uff09\u4e2d\uff0c\u5b83\u81f3\u5c11\u4f1a\u628a\u4e00\u4e2a\u5143\u7d20\u6446\u5230\u5b83\u6700\u540e\u7684\u4f4d\u7f6e\u53bb\u3002<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155484.webp'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155484.webp\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5212\u5206\u503c\u53d6\u7684\u597d\u7684\u8bdd\uff0c\u6570\u636e\u7ed3\u6784\u65f6\u95f4\u590d\u6742\u5ea6\u53ef\u4ee5\u8fbe\u5230 NlogN\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155485.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155485.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210928215036559\" style=\"zoom: 25%;\" \/><\/div><\/p>\n<p>\u5c06\u5212\u5206\u503c\u770b\u6210\u7b49\u6982\u7387\u597d\u574f\uff0c\u518d\u5bf9\u4e0d\u540c\u60c5\u51b5\u4e0b\u7684master\u516c\u5f0f\u6c42\u6570\u5b66\u671f\u671b\uff0c\u53ef\u5f97\u6570\u5b66\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(NlogN)\u3002<\/p>\n<pre><code class=\"language-java\">\/\/\u5feb\u901f\u6392\u5e8f\u76f8\u5173\u4ee3\u7801\npublic static void quickSort(int[] arr){\n    if(arr == null || arr.length&lt;2){\n        return;\n    }\n    quickSort(arr,0,arr.length-1);\n}\npublic static void quickSort(int[] arr,int l,int r){\n    if(l &lt; r){\n        swap(arr, l+(int)(Math.random()*(r-l+1)),r);\/\/\u968f\u673a\u62bd\u53d6\u6570\u503c\n        int[] p = partition(arr,l,r);\/\/\u5c06\u7b49\u4e8ex\u90e8\u5206\u7b5b\u51fa\uff0c\u5b58\u653e\u81f3\u6570\u7ec4\u4e4b\u4e2d\u3002\n        quickSort(arr,l,p[0]-1);\/\/\u5c0f\u4e8e\u90e8\u5206\u5feb\u901f\u6392\u5e8f\n        quickSort(arr,p[1]+2,r);\/\/\u5927\u4e8e\u90e8\u5206\u5feb\u901f\u6392\u5e8f\n    }\n}\npublic static int[] partition(int[] arr,int l,int r){\n    int less = l-1;\n    int more = r;\n    \/\/\u5c06r\u5f53\u4f5c\u8be5\u6570\u503c\uff0c\u5c06r-1\u4e2a\u6570\u503c\u8fdb\u884c\u6bd4\u8f83\uff0c\u6700\u540e\u518d\u5c06more\u548cr\u8fdb\u884c\u8f6c\u6362\u3002\n    while(l&lt;more){\n        if(arr[l]&lt;arr[r]){\n            swap(arr,++less,l++);\n        }else if(arr[l]&gt;arr[r]){\n            swap(arr,--more,l);\n        }else{\n            l++\n        }\n    }\n    swap(arr,more,r);\n    return new int[] { less+1,more};\n}\npublic static void swap(int[] arr,int i,int j){\n    int tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}<\/code><\/pre>\n<h3>\u5806<\/h3>\n<p>\u5728\u903b\u8f91\u4e0a\u662f\u5b8c\u5168\u4e8c\u53c9\u6811<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155486.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155486.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929133932156\" style=\"zoom: 33%;\" \/><\/div><\/p>\n<h3>\u5806\u6392\u5e8f<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/images2017.cnblogs.com\/blog\/849589\/201710\/849589-20171015231308699-356134237.gif'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/images2017.cnblogs.com\/blog\/849589\/201710\/849589-20171015231308699-356134237.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:67%;\" \/><\/div><\/p>\n<p>\u8ba9\u7528\u6237\u8f93\u5165\u7684\u6570\u5b57\u53d8\u6210\u5927\u6839\u5806\u3002<\/p>\n<pre><code>heapinsert      \n(1).\u987a\u5e8f\u63d2\u5165\u3002\n(2).\u5c06\u6570\u5b57\u548c\u7236\u4f4d\u7f6e\u7684\u6839\u8282\u70b9\u6bd4\u8f83\uff0c\u6bd4\u6839\u8282\u70b9\u5927\u5219\u8ddf\u6362\u4f4d\u7f6e\uff0c\u4e0d\u5927\u5219\u987a\u5e8f\u6392\u5217\u3002\n(3).\u548c\u66f4\u9ad8\u7684\u6839\u8282\u70b9\u6bd4\u8f83\uff0c\u66f4\u6362\u3002<\/code><\/pre>\n<p>\u5982\u679c\u8981\u5220\u9664\u5927\u6839\u5806\u7684\u6839\u8282\u70b9\u600e\u4e48\u5904\u7406\uff1f<\/p>\n<pre><code>heapify\n\u5c06\u6700\u540e\u4e00\u4e2a\u6570\u5b57\u653e\u5230\u7b2c\u4e00\u4e2a\u4f4d\u7f6e\uff0cheapsize - 1\uff1b\n\u5c06\u8be5\u6570\u5b57\u4e0e\u5de6\u5b50\u6811\uff0c\u53f3\u5b50\u6811\u6839\u8282\u70b9\u6bd4\u8f83\uff0c\u4ea4\u6362\uff1b\n\u91cd\u590d\u4e0a\u4e2a\u6b65\u9aa4\u3002<\/code><\/pre>\n<pre><code class=\"language-java\">\/\/heapinsert\u76f8\u5173\u4ee3\u7801\npublic static void heapInsert(int [] arr, int index){\n    while(arr[index] &gt; arr[(index - 1)\/2]){\n        swap(arr, index, (index - 1) \/2);\n        index = (index - 1) \/2; \n    }\n}\npublic static void heapify(int[] arr, int index, int heapSize){\n    int left = index * 2 + 1;\n    while (left &lt; heapSize){\n        int largest = left + 1 &lt; heapSize &amp;&amp; arr[left &gt; 1] &gt; arr[left] ? left + 1 : left;\n        \/\/\u4e0a\u8ff0\u5f0f\u5b50\u7406\u89e3\uff1a\u5148\u5bf9(left + 1 &lt; heapSize)(arr[left &gt; 1] &gt; arr[left])\u5206\u522b\u8fdb\u884c\u5224\u65ad\uff0c\u518d\u8fdb\u884c\u903b\u8f91\u4e0e&amp;&amp;\u8fd0\u7b97\uff0c\u6b63\u786e\u53d6\u5de6\uff0c\u4e0d\u6b63\u786e\u53d6\u53f3\uff0c\u6700\u540e\u8d4b\u503c\u3002\n        largest = arr[largest] &gt; arr[index] ? largest : index;\n        if(largest == index){\n            break;\n        }\n        swap(arr, largest, index);\n        index = largest;\n        left = index * 2 + 1\uff1b\n    }\n}\npublic static void swap(intp[] arr, int i, int j){\n    int temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n}<\/code><\/pre>\n<pre><code class=\"language-java\">\/\/\u5806\u6392\u5e8fcode\npublic static void Code02_HeapSort{\n    public static void heapSort(int [] arr){\n        if(arr = null || arr.length &lt; 2){\n            return;\n        }\n\/\/        for(int i = 0, i &lt; arr.length, i++){\n\/\/        heapInsert(arr, i);\n\/\/      }\n        for(int i = arr.length - 1;i &gt;= 0;i--){\n            heapify(arr, i, arr.length);\n        }\/\/\u8be5\u65b9\u6cd5\u6bd4\u4e0a\u9762\u7684\u6ce8\u91ca\u5185\u5bb9\u7565\u5feb\uff0c\u4f46\u4e0d\u5f71\u54cd\u6574\u4f53\u7684\u590d\u6742\u5ea6\u3002\n        int heapSize = arr.length;\n        swap(arr, 0, --heapSize);\n        while(heapSize &gt; 0){\n            heapify(arr, 0, heapSize);\n            swap(arr, 0, --heapSize);\n        }\n    }\n}<\/code><\/pre>\n<p>\u5806\u6392\u5e8f\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(NlogN)\uff0c\u989d\u5916\u7a7a\u95f4\u590d\u6742\u5ea6\u4e3aO(1)\u3002<\/p>\n<p>\u5982\u679c\u76f4\u63a5\u7ed9n\u4e2a\u6570\u7684\u6570\u7ec4\uff0c\u4ece\u53f3\u81f3\u5de6\uff0c\u4ece\u4e0b\u5f80\u4e0aheapify\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155487.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155487.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929145302457\" style=\"zoom: 33%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155488.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155488.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929145816301\" style=\"zoom:50%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155489.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155489.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929150455862\" style=\"zoom: 33%;\" \/><\/div> <\/p>\n<p>\u5176\u590d\u6742\u5ea6\u4e3aO(logk)\u3002<\/p>\n<h4>\u4f18\u5148\u961f\u5217<\/h4>\n<pre><code class=\"language-c++\">#include&lt;iostream&gt;\n#include&lt;queue&gt;\nusing namespace std;\nint main()\n{\n    priority_queue&lt;int&gt;heap;\n    heap.push(10);\n    heap.push(8);\n    heap.push(9);\n    heap.push(12);\n    heap.push(3);\n\n    while(heap.size()&gt;0)\n    {\n        cout&lt;&lt;heap.top()&lt;&lt;&quot; &quot;;\n        heap.pop();\n    }\n    return 0;\n}\n<\/code><\/pre>\n<pre><code class=\"language-java\">import java.util.PriorityQueue;\npublic class04_SortArrayDistanceLessK{\n    public void sortedArrayDistanceLessK(int [] arr, int k){\n        \/\/\u9ed8\u8ba4\u5c0f\u6839\u5806\uff0c\u7cfb\u7edf\u4f18\u5148\u6392\u5e8f\u3002\n        PriorityQueue&lt;Integer&gt; heap = new PriorityQueue&lt;&gt;();\n        int index = 0;\n        for(; index &lt;= Math.min(arr.length,k);index++){\n            heap.add(arr[index]);\n        }\n        int i = 0;\n        for(;index &lt;= arr.length; index++){\n            heap.add(arr[index]);\n            arr[i] = heap.poll();\n        }\n        while(!heap.isEmpty()){\n            arr[i++] = heap.poll();\n        }\n    }\n    public static void main(String [] args){\n        PriorityQueue&lt;Integer&gt; heap = new PriorityQueue&lt;&gt;();\n        heap.add(8);\n        heap.add(4);\n        heap.add(4);\n        heap.add(9);\n        heap.add(10);\n        heap.add(3);\n        while(!heap.isEmpty()){\n            System.out.println(heap.poll());\n        }\/\/&gt;&gt;&gt;3 4 4 8 9 10\n    }\n}<\/code><\/pre>\n<h3>\u6bd4\u8f83\u5668<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155490.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155490.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929155349986\" style=\"zoom: 67%;\" \/><\/div> <\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155491.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155491.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/div><\/p>\n<h2>3.\u6876\u6392\u5e8f\u4ee5\u53ca\u6392\u5e8f\u5185\u5bb9\u5927\u603b\u7ed3<\/h2>\n<h3>\u8ba1\u6570\u6392\u5e8f<\/h3>\n<p><strong>\u8ba1\u6570\u6392\u5e8f\uff08Counting sort\uff09<\/strong>\u662f\u4e00\u79cd\u7a33\u5b9a\u7684\u7ebf\u6027\u65f6\u95f4\u6392\u5e8f\u7b97\u6cd5\u3002<\/p>\n<h4>1. \u57fa\u672c\u601d\u60f3<\/h4>\n<p>\u8ba1\u6570\u6392\u5e8f\u4f7f\u7528\u4e00\u4e2a\u989d\u5916\u7684\u6570\u7ec4C\uff0c\u5176\u4e2d\u7b2ci\u4e2a\u5143\u7d20\u662f\u5f85\u6392\u5e8f\u6570\u7ec4A\u4e2d\u503c\u7b49\u4e8ei\u7684\u5143\u7d20\u7684\u4e2a\u6570\u3002<\/p>\n<p>\u8ba1\u6570\u6392\u5e8f\u7684\u6838\u5fc3\u5728\u4e8e\u5c06\u8f93\u5165\u7684\u6570\u636e\u503c\u8f6c\u5316\u4e3a\u952e\u5b58\u50a8\u5728\u989d\u5916\u5f00\u8f9f\u7684\u6570\u7ec4\u7a7a\u95f4\u4e2d\u3002\u4f5c\u4e3a\u4e00\u79cd\u7ebf\u6027\u65f6\u95f4\u590d\u6742\u5ea6\u7684\u6392\u5e8f\uff0c\u8ba1\u6570\u6392\u5e8f\u8981\u6c42\u8f93\u5165\u7684\u6570\u636e\u5fc5\u987b\u662f\u6709\u786e\u5b9a\u8303\u56f4\u7684\u6574\u6570\u3002<\/p>\n<p>\u7528\u6765\u8ba1\u6570\u7684\u6570\u7ec4C\u7684\u957f\u5ea6\u53d6\u51b3\u4e8e\u5f85\u6392\u5e8f\u6570\u7ec4\u4e2d\u6570\u636e\u7684\u8303\u56f4\uff08\u7b49\u4e8e\u5f85\u6392\u5e8f\u6570\u7ec4\u7684\u6700\u5927\u503c\u4e0e\u6700\u5c0f\u503c\u7684\u5dee\u52a0\u4e0a1\uff09\uff0c\u7136\u540e\u8fdb\u884c\u5206\u914d\u3001\u6536\u96c6\u5904\u7406\uff1a<\/p>\n<blockquote>\n<p>\u2460 <strong>\u5206\u914d<\/strong>\u3002\u626b\u63cf\u4e00\u904d\u539f\u59cb\u6570\u7ec4\uff0c\u4ee5\u5f53\u524d\u503c-minValue\u4f5c\u4e3a\u4e0b\u6807\uff0c\u5c06\u8be5\u4e0b\u6807\u7684\u8ba1\u6570\u5668\u589e1\u3002<br \/>\n\u2461 <strong>\u6536\u96c6<\/strong>\u3002\u626b\u63cf\u4e00\u904d\u8ba1\u6570\u5668\u6570\u7ec4\uff0c\u6309\u987a\u5e8f\u628a\u503c\u6536\u96c6\u8d77\u6765\u3002<\/p>\n<\/blockquote>\n<h4>2. \u5b9e\u73b0\u903b\u8f91<\/h4>\n<blockquote>\n<p>\u2460 \u627e\u51fa\u5f85\u6392\u5e8f\u7684\u6570\u7ec4\u4e2d\u6700\u5927\u548c\u6700\u5c0f\u7684\u5143\u7d20<br \/>\n\u2461 \u7edf\u8ba1\u6570\u7ec4\u4e2d\u6bcf\u4e2a\u503c\u4e3ai\u7684\u5143\u7d20\u51fa\u73b0\u7684\u6b21\u6570\uff0c\u5b58\u5165\u6570\u7ec4C\u7684\u7b2ci\u9879<br \/>\n\u2462 \u5bf9\u6240\u6709\u7684\u8ba1\u6570\u7d2f\u52a0\uff08\u4eceC\u4e2d\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u5f00\u59cb\uff0c\u6bcf\u4e00\u9879\u548c\u524d\u4e00\u9879\u76f8\u52a0\uff09<br \/>\n\u2463 \u53cd\u5411\u586b\u5145\u76ee\u6807\u6570\u7ec4\uff1a\u5c06\u6bcf\u4e2a\u5143\u7d20i\u653e\u5728\u65b0\u6570\u7ec4\u7684\u7b2cC(i)\u9879\uff0c\u6bcf\u653e\u4e00\u4e2a\u5143\u7d20\u5c31\u5c06C(i)\u51cf\u53bb1<\/p>\n<\/blockquote>\n<h4>3. \u52a8\u56fe\u6f14\u793a<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155492.webp'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155492.webp\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u8ba1\u6570\u6392\u5e8f\u6f14\u793a<\/p>\n<p>\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u5047\u8bbe\u6709\u65e0\u5e8f\u6570\u5217nums=[2, 1, 3, 1, 5], \u9996\u5148\u626b\u63cf\u4e00\u904d\u83b7\u53d6\u6700\u5c0f\u503c\u548c\u6700\u5927\u503c\uff0cmaxValue=5, minValue=1\uff0c\u4e8e\u662f\u5f00\u4e00\u4e2a\u957f\u5ea6\u4e3a5\u7684\u8ba1\u6570\u5668\u6570\u7ec4counter<\/p>\n<blockquote>\n<p><strong>(1) \u5206\u914d<\/strong><br \/>\n\u7edf\u8ba1\u6bcf\u4e2a\u5143\u7d20\u51fa\u73b0\u7684\u9891\u7387\uff0c\u5f97\u5230counter=[2, 1, 1, 0, 1]\uff0c\u4f8b\u5982counter[0]\u8868\u793a\u503c0+minValue=1\u51fa\u73b0\u4e862\u6b21\u3002<br \/>\n<strong>(2) \u6536\u96c6<\/strong><br \/>\ncounter[0]=2\u8868\u793a1\u51fa\u73b0\u4e86\u4e24\u6b21\uff0c\u90a3\u5c31\u5411\u539f\u59cb\u6570\u7ec4\u5199\u5165\u4e24\u4e2a1\uff0ccounter[1]=1\u8868\u793a2\u51fa\u73b0\u4e861\u6b21\uff0c\u90a3\u5c31\u5411\u539f\u59cb\u6570\u7ec4\u5199\u5165\u4e00\u4e2a2\uff0c\u4f9d\u6b21\u7c7b\u63a8\uff0c\u6700\u7ec8\u539f\u59cb\u6570\u7ec4\u53d8\u4e3a[1,1,2,3,5]\uff0c\u6392\u5e8f\u597d\u4e86\u3002<\/p>\n<\/blockquote>\n<h4>4. \u590d\u6742\u5ea6\u5206\u6790<\/h4>\n<blockquote>\n<p>\u5e73\u5747\u65f6\u95f4\u590d\u6742\u5ea6\uff1aO(n + k)<br \/>\n\u6700\u4f73\u65f6\u95f4\u590d\u6742\u5ea6\uff1aO(n + k)<br \/>\n\u6700\u5dee\u65f6\u95f4\u590d\u6742\u5ea6\uff1aO(n + k)<br \/>\n\u7a7a\u95f4\u590d\u6742\u5ea6\uff1aO(n + k)<\/p>\n<\/blockquote>\n<p>\u5f53\u8f93\u5165\u7684\u5143\u7d20\u662fn \u4e2a0\u5230k\u4e4b\u95f4\u7684\u6574\u6570\u65f6\uff0c\u5b83\u7684\u8fd0\u884c\u65f6\u95f4\u662f O(n + k)\u3002\u3002\u5728\u5b9e\u9645\u5de5\u4f5c\u4e2d\uff0c\u5f53k=O(n)\u65f6\uff0c\u6211\u4eec\u4e00\u822c\u4f1a\u91c7\u7528\u8ba1\u6570\u6392\u5e8f\uff0c\u8fd9\u65f6\u7684\u8fd0\u884c\u65f6\u95f4\u4e3aO(n)\u3002<\/p>\n<p>\u8ba1\u6570\u6392\u5e8f\u9700\u8981\u4e24\u4e2a\u989d\u5916\u7684\u6570\u7ec4\u7528\u6765\u5bf9\u5143\u7d20\u8fdb\u884c\u8ba1\u6570\u548c\u4fdd\u5b58\u6392\u5e8f\u7684\u8f93\u51fa\u7ed3\u679c\uff0c\u6240\u4ee5\u7a7a\u95f4\u590d\u6742\u5ea6\u4e3aO(k+n)\u3002<\/p>\n<p>\u8ba1\u6570\u6392\u5e8f\u7684\u4e00\u4e2a\u91cd\u8981\u6027\u8d28\u662f\u5b83\u662f\u7a33\u5b9a\u7684\uff1a\u5177\u6709\u76f8\u540c\u503c\u7684\u5143\u7d20\u5728\u8f93\u51fa\u6570\u7ec4\u4e2d\u7684\u76f8\u5bf9\u6b21\u5e8f\u4e0e\u5b83\u4eec\u5728\u8f93\u5165\u6570\u7ec4\u4e2d\u7684\u76f8\u5bf9\u6b21\u5e8f\u662f\u76f8\u540c\u7684\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u5bf9\u4e24\u4e2a\u76f8\u540c\u7684\u6570\u6765\u8bf4\uff0c\u5728\u8f93\u5165\u6570\u7ec4\u4e2d\u5148\u51fa\u73b0\u7684\u6570\uff0c\u5728\u8f93\u51fa\u6570\u7ec4\u4e2d\u4e5f\u4f4d\u4e8e\u524d\u9762\u3002<\/p>\n<p>\u8ba1\u6570\u6392\u5e8f\u7684\u7a33\u5b9a\u6027\u5f88\u91cd\u8981\u7684\u4e00\u4e2a\u539f\u56e0\u662f\uff1a\u8ba1\u6570\u6392\u5e8f\u7ecf\u5e38\u4f1a\u88ab\u7528\u4e8e\u57fa\u6570\u6392\u5e8f\u7b97\u6cd5\u7684\u4e00\u4e2a\u5b50\u8fc7\u7a0b\u3002\u6211\u4eec\u5c06\u5728\u540e\u9762\u6587\u7ae0\u4e2d\u4ecb\u7ecd\uff0c\u4e3a\u4e86\u4f7f\u57fa\u6570\u6392\u5e8f\u80fd\u591f\u6b63\u786e\u8fd0\u884c\uff0c\u8ba1\u6570\u6392\u5e8f\u5fc5\u987b\u662f\u7a33\u5b9a\u7684\u3002<\/p>\n<h4>5. \u4ee3\u7801\u5b9e\u73b0<\/h4>\n<p><strong>C\u7248\u672c\uff1a<\/strong><\/p>\n<pre><code class=\"language-c\">\/\/ \u8ba1\u6570\u6392\u5e8f\uff08C\uff09\n#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;time.h&gt;\nvoid print_arr(int *arr, int n) {\n    int i;\n    printf(&quot;%d&quot;, arr[0]);\n    for (i = 1; i &lt; n; i++)\n        printf(&quot; %d&quot;, arr[i]);\n    printf(&quot;\\n&quot;);\n}\nvoid counting_sort(int *ini_arr, int *sorted_arr, int n) {\n    int *count_arr = (int *) malloc(sizeof(int) * 100);\n    int i, j, k;\n    for (k = 0; k &lt; 100; k++)\n        count_arr[k] = 0;\n    for (i = 0; i &lt; n; i++)\n        count_arr[ini_arr[i]]++;\n    for (k = 1; k &lt; 100; k++)\n        count_arr[k] += count_arr[k - 1];\n    for (j = n; j &gt; 0; j--)\n        sorted_arr[--count_arr[ini_arr[j - 1]]] = ini_arr[j - 1];\n    free(count_arr);\n}\nint main(int argc, char **argv) {\n    int n = 10;\n    int i;\n    int *arr = (int *) malloc(sizeof(int) * n);\n    int *sorted_arr = (int *) malloc(sizeof(int) * n);\n    srand(time(0));\n    for (i = 0; i &lt; n; i++)\n        arr[i] = rand() % 100;\n    printf(&quot;ini_array: &quot;);\n    print_arr(arr, n);\n    counting_sort(arr, sorted_arr, n);\n    printf(&quot;sorted_array: &quot;);\n    print_arr(sorted_arr, n);\n    free(arr);\n    free(sorted_arr);\n    return 0;\n}<\/code><\/pre>\n<p><strong>Java\u7248\u672c\uff1a<\/strong><\/p>\n<pre><code class=\"language-java\">\/\/ \u8ba1\u6570\u6392\u5e8f(Java)\npublic class CountingSort {\n    public static void main(String[] argv) {\n        int[] A = CountingSort.countingSort(new int[]{16, 4, 10, 14, 7, 9, 3, 2, 8, 1});\n        Utils.print(A);\n    }\n    public static int[] countingSort(int[] A) {\n        int[] B = new int[A.length];\n        \/\/ \u5047\u8bbeA\u4e2d\u7684\u6570\u636ea&#039;\u6709\uff0c0&lt;=a&#039; &amp;&amp; a&#039; &lt; k\u5e76\u4e14k=100\n        int k = 100;\n        countingSort(A, B, k);\n        return B;\n    }\n    private static void countingSort(int[] A, int[] B, int k) {\n        int[] C = new int[k];\n        \/\/ \u8ba1\u6570\n        for (int j = 0; j &lt; A.length; j++) {\n            int a = A[j];\n            C[a] += 1;\n        }\n        Utils.print(C);\n        \/\/ \u6c42\u8ba1\u6570\u548c\n        for (int i = 1; i &lt; k; i++) {\n            C[i] = C[i] + C[i - 1];\n        }\n        Utils.print(C);\n        \/\/ \u6574\u7406\n        for (int j = A.length - 1; j &gt;= 0; j--) {\n            int a = A[j];\n            B[C[a] - 1] = a;\n            C[a] -= 1;\n        }\n    }\n}<\/code><\/pre>\n<h4>6. \u4f18\u5316\u6539\u8fdb<\/h4>\n<p><strong>\u573a\u666f\u5206\u6790\uff1a<\/strong>\u4e3e\u4e2a\u6781\u7aef\u7684\u4f8b\u5b50\uff1a\u5982\u679c\u6392\u5e8f\u7684\u6570\u7ec4\u6709200W\u4e2a\u5143\u7d20\uff0c\u4f46\u662f\u8fd9200W\u4e2a\u6570\u7684\u503c\u90fd\u57281000000-1000100\uff0c\u4e5f\u5c31\u8bf4\u6709100\u4e2a\u6570\uff0c\u603b\u5171\u91cd\u590d\u4e86200W\u6b21\uff0c\u73b0\u5728\u8981\u6392\u5e8f\uff0c\u600e\u4e48\u529e\uff1f<\/p>\n<p>\u8fd9\u79cd\u60c5\u51b5\u6392\u5e8f\uff0c\u8ba1\u6570\u6392\u5e8f\u5e94\u8be5\u662f\u9996\u9009\u3002\u4f46\u662f\u8fd9\u65f6\u5019n\u7684\u503c\u4e3a200W\uff0c\u5982\u679c\u6309\u539f\u6765\u7684\u7b97\u6cd5\uff0ck\u7684\u503c10001000\uff0c\u4f46\u662f\u6b64\u65f6c\u4e2d\u771f\u6b63\u7528\u5230\u7684\u5730\u65b9\u53ea\u6709100\u4e2a\uff0c\u8fd9\u6837\u5bf9\u7a7a\u95f4\u9020\u6210\u4e86\u6781\u5927\u7684\u6d6a\u8d39\u3002<\/p>\n<p><strong>\u6539\u8fdb\u601d\u8def\uff1a<\/strong>\u9488\u5bf9c\u6570\u7ec4\u7684\u5927\u5c0f\uff0c\u4f18\u5316\u8ba1\u6570\u6392\u5e8f<\/p>\n<p><strong>\u6539\u8fdb\u4ee3\u7801\uff1a<\/strong><\/p>\n<pre><code class=\"language-java\">\/\/ \u8ba1\u6570\u6392\u5e8f\u4f18\u5316(Java)\n\/\/ \u9488\u5bf9c\u6570\u7ec4\u7684\u5927\u5c0f\uff0c\u4f18\u5316\u8ba1\u6570\u6392\u5e8f\npublic class CountSort{\n    public static void main(String []args){\n        \/\/\u6392\u5e8f\u7684\u6570\u7ec4\n        int a[] = {100, 93, 97, 92, 96, 99, 92, 89, 93, 97, 90, 94, 92, 95};\n        int b[] = countSort(a);\n        for(int i : b){\n            System.out.print(i + &quot;  &quot;);\n        }\n        System.out.println();\n    }\n    public static int[] countSort(int []a){\n        int b[] = new int[a.length];\n        int max = a[0], min = a[0];\n        for(int i : a){\n            if(i &gt; max){\n                max = i;\n            }\n            if(i &lt; min){\n                min = i;\n            }\n        }\n        \/\/\u8fd9\u91cck\u7684\u5927\u5c0f\u662f\u8981\u6392\u5e8f\u7684\u6570\u7ec4\u4e2d\uff0c\u5143\u7d20\u5927\u5c0f\u7684\u6781\u503c\u5dee+1\n        int k = max - min + 1;\n        int c[] = new int[k];\n        for(int i = 0; i &lt; a.length; ++i){\n            c[a[i]-min] += 1;\/\/\u4f18\u5316\u8fc7\u7684\u5730\u65b9\uff0c\u51cf\u5c0f\u4e86\u6570\u7ec4c\u7684\u5927\u5c0f\n        }\n        for(int i = 1; i &lt; c.length; ++i){\n            c[i] = c[i] + c[i-1];\n        }\n        for(int i = a.length-1; i &gt;= 0; --i){\n            b[--c[a[i]-min]] = a[i];\/\/\u6309\u5b58\u53d6\u7684\u65b9\u5f0f\u53d6\u51fac\u7684\u5143\u7d20\n        }\n        return b;\n    }\n}<\/code><\/pre>\n<hr \/>\n<p>\u4e09\u3001\u603b\u7ed3<\/p>\n<p>\u8ba1\u6570\u7b97\u6cd5\u53ea\u80fd\u4f7f\u7528\u5728\u5df2\u77e5\u5e8f\u5217\u4e2d\u7684\u5143\u7d20\u57280-k\u4e4b\u95f4\uff0c\u4e14\u8981\u6c42\u6392\u5e8f\u7684\u590d\u6742\u5ea6\u5728\u7ebf\u6027\u6548\u7387\u4e0a\u3002 \u00c2 \u8ba1\u6570\u6392\u5e8f\u548c\u57fa\u6570\u6392\u5e8f\u5f88\u7c7b\u4f3c\uff0c\u90fd\u662f\u975e\u6bd4\u8f83\u578b\u6392\u5e8f\u7b97\u6cd5\u3002\u4f46\u662f\uff0c\u5b83\u4eec\u7684\u6838\u5fc3\u601d\u60f3\u662f\u4e0d\u540c\u7684\uff0c\u57fa\u6570\u6392\u5e8f\u4e3b\u8981\u662f\u6309\u7167\u8fdb\u5236\u4f4d\u5bf9\u6574\u6570\u8fdb\u884c\u4f9d\u6b21\u6392\u5e8f\uff0c\u800c\u8ba1\u6570\u6392\u5e8f\u4e3b\u8981\u4fa7\u91cd\u4e8e\u5bf9\u6709\u9650\u8303\u56f4\u5185\u5bf9\u8c61\u7684\u7edf\u8ba1\u3002\u57fa\u6570\u6392\u5e8f\u53ef\u4ee5\u91c7\u7528\u8ba1\u6570\u6392\u5e8f\u6765\u5b9e\u73b0\u3002<\/p>\n<h3>\u6876\u6392\u5e8f<\/h3>\n<p>\u6876\u6392\u5e8f\u662f\u8ba1\u6570\u6392\u5e8f\u7684\u5347\u7ea7\u7248\u3002\u5b83\u5229\u7528\u4e86\u51fd\u6570\u7684\u6620\u5c04\u5173\u7cfb\uff0c\u9ad8\u6548\u4e0e\u5426\u7684\u5173\u952e\u5c31\u5728\u4e8e\u8fd9\u4e2a\u6620\u5c04\u51fd\u6570\u7684\u786e\u5b9a\u3002\u4e3a\u4e86\u4f7f\u6876\u6392\u5e8f\u66f4\u52a0\u9ad8\u6548\uff0c\u6211\u4eec\u9700\u8981\u505a\u5230\u8fd9\u4e24\u70b9\uff1a<\/p>\n<ol>\n<li>\u5728\u989d\u5916\u7a7a\u95f4\u5145\u8db3\u7684\u60c5\u51b5\u4e0b\uff0c\u5c3d\u91cf\u589e\u5927\u6876\u7684\u6570\u91cf<\/li>\n<li>\u4f7f\u7528\u7684\u6620\u5c04\u51fd\u6570\u80fd\u591f\u5c06\u8f93\u5165\u7684 N \u4e2a\u6570\u636e\u5747\u5300\u7684\u5206\u914d\u5230 K \u4e2a\u6876\u4e2d<\/li>\n<\/ol>\n<p>\u540c\u65f6\uff0c\u5bf9\u4e8e\u6876\u4e2d\u5143\u7d20\u7684\u6392\u5e8f\uff0c\u9009\u62e9\u4f55\u79cd\u6bd4\u8f83\u6392\u5e8f\u7b97\u6cd5\u5bf9\u4e8e\u6027\u80fd\u7684\u5f71\u54cd\u81f3\u5173\u91cd\u8981\u3002<\/p>\n<h4>1. \u4ec0\u4e48\u65f6\u5019\u6700\u5feb<\/h4>\n<p>\u5f53\u8f93\u5165\u7684\u6570\u636e\u53ef\u4ee5\u5747\u5300\u7684\u5206\u914d\u5230\u6bcf\u4e00\u4e2a\u6876\u4e2d\u3002<\/p>\n<h4>2. \u4ec0\u4e48\u65f6\u5019\u6700\u6162<\/h4>\n<p>\u5f53\u8f93\u5165\u7684\u6570\u636e\u88ab\u5206\u914d\u5230\u4e86\u540c\u4e00\u4e2a\u6876\u4e2d\u3002<\/p>\n<h4>3. \u793a\u610f\u56fe<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20200316092036366.gif'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20200316092036366.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom:67%;\" \/><\/div><\/p>\n<p>\u5143\u7d20\u5206\u5e03\u5728\u6876\u4e2d\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.runoob.com\/wp-content\/uploads\/2019\/03\/Bucket_sort_1.svg_.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/www.runoob.com\/wp-content\/uploads\/2019\/03\/Bucket_sort_1.svg_.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u7136\u540e\uff0c\u5143\u7d20\u5728\u6bcf\u4e2a\u6876\u4e2d\u6392\u5e8f\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.runoob.com\/wp-content\/uploads\/2019\/03\/Bucket_sort_2.svg_.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/www.runoob.com\/wp-content\/uploads\/2019\/03\/Bucket_sort_2.svg_.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code class=\"language-java\">public class BucketSort implements IArraySort {\n\n    private static final InsertSort insertSort = new InsertSort();\n\n    @Override\n    public int[] sort(int[] sourceArray) throws Exception {\n        \/\/ \u5bf9 arr \u8fdb\u884c\u62f7\u8d1d\uff0c\u4e0d\u6539\u53d8\u53c2\u6570\u5185\u5bb9\n        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);\n\n        return bucketSort(arr, 5);\n    }\n\n    private int[] bucketSort(int[] arr, int bucketSize) throws Exception {\n        if (arr.length == 0) {\n            return arr;\n        }\n\n        int minValue = arr[0];\n        int maxValue = arr[0];\n        for (int value : arr) {\n            if (value &lt; minValue) {\n                minValue = value;\n            } else if (value &gt; maxValue) {\n                maxValue = value;\n            }\n        }\n\n        int bucketCount = (int) Math.floor((maxValue - minValue) \/ bucketSize) + 1;\n        int[][] buckets = new int[bucketCount][0];\n\n        \/\/ \u5229\u7528\u6620\u5c04\u51fd\u6570\u5c06\u6570\u636e\u5206\u914d\u5230\u5404\u4e2a\u6876\u4e2d\n        for (int i = 0; i &lt; arr.length; i++) {\n            int index = (int) Math.floor((arr[i] - minValue) \/ bucketSize);\n            buckets[index] = arrAppend(buckets[index], arr[i]);\n        }\n\n        int arrIndex = 0;\n        for (int[] bucket : buckets) {\n            if (bucket.length &lt;= 0) {\n                continue;\n            }\n            \/\/ \u5bf9\u6bcf\u4e2a\u6876\u8fdb\u884c\u6392\u5e8f\uff0c\u8fd9\u91cc\u4f7f\u7528\u4e86\u63d2\u5165\u6392\u5e8f\n            bucket = insertSort.sort(bucket);\n            for (int value : bucket) {\n                arr[arrIndex++] = value;\n            }\n        }\n\n        return arr;\n    }\n\n    \/**\n     * \u81ea\u52a8\u6269\u5bb9\uff0c\u5e76\u4fdd\u5b58\u6570\u636e\n     *\n     * @param arr\n     * @param value\n     *\/\n    private int[] arrAppend(int[] arr, int value) {\n        arr = Arrays.copyOf(arr, arr.length + 1);\n        arr[arr.length - 1] = value;\n        return arr;\n    }\n\n}<\/code><\/pre>\n<h3>\u57fa\u6570\u6392\u5e8f<\/h3>\n<p>\u4ee5\u5341\u8fdb\u5236\u4e09\u4f4d\u6570\u7684\u6570\u7ec4\u4e3a\u4f8b\uff0c\u51c6\u590710\u4e2a\u6876\uff0c\u5206\u522b\u5bf9\u5e94 0~9\u7684\u57fa\u6570\u4f4d\uff0c\u9996\u5148\u6839\u636e\u4e2a\u4f4d\u6570\u51b3\u5b9a\u8fdb\u54ea\u4e2a\u6876\uff0c\u5bf9\u4e2a\u4f4d\u6570\u8fdb\u884c\u6392\u5e8f\uff1b\u518d\u4ee5\u5341\u4f4d\u6570\u51b3\u5b9a\u8fdb\u54ea\u4e2a\u6876\uff0c\u5bf9\u5341\u4f4d\u6570\u8fdb\u884c\u6392\u5e8f\uff1b\u6700\u540e\u56e0\u4e3a\u6392\u5e8f\u4f18\u5148\u7ea7\u662f\u4ece\u5341\u4f4d\u5230\u4e2a\u4f4d\u7684\uff0c\u5c31\u53ef\u4ee5\u5f97\u5230\u6574\u4f53\u6709\u5e8f\u7684\u6570\u7ec4\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/img_convert\/0bde68f9137bb6720d6981d6d76574d7.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/img_convert\/0bde68f9137bb6720d6981d6d76574d7.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"Alt\" style=\"zoom: 67%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20200316185713868.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYxNDAyNg==,size_16,color_FFFFFF,t_70'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20200316185713868.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYxNDAyNg==,size_16,color_FFFFFF,t_70\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom:67%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20200316185922116.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYxNDAyNg==,size_16,color_FFFFFF,t_70'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20200316185922116.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYxNDAyNg==,size_16,color_FFFFFF,t_70\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom:67%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20200316190039212.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYxNDAyNg==,size_16,color_FFFFFF,t_70'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20200316190039212.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYxNDAyNg==,size_16,color_FFFFFF,t_70\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom: 67%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155493.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155493.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929181019220\" style=\"zoom:10%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155494.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155494.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929181112055\" style=\"zoom:10%;\" \/><\/div><\/p>\n<p>\u5904\u7406\u4ee5\u540e\u53d8\u4e3a\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155495.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155495.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929181156416\" style=\"zoom:10%;\" \/><\/div><\/p>\n<pre><code class=\"language-java\">\/\/arr[L...R]\u6392\u5e8f digit\u662f\u6700\u5927\u7684\u6570\u5b57\u6709\u591a\u5c11\u4e2a\u5341\u8fdb\u5236\u4f4d\uff0c\n\/\/\u4e5f\u5c31\u662f\u6700\u5927\u503c\u7684\u6570 \u4f4d\u6570\npublic static radixSort(int[] arr,int L,int R,int digit)\n{\n    final int radix=10;\n    int i=0,j=0;\n    \/\/\u6709\u591a\u5c11\u4e2a\u6570\u51c6\u5907\u591a\u5c11\u4e2a\u8f85\u52a9\u7a7a\u95f4\n    int[] bucket=new int[R-L+1];\n    \/\/\u6709\u591a\u5c11\u4f4d\u5c31\u64cd\u4f5c\u51e0\u6b21\n    for(int d=1;d&lt;=digit;d++)\n    {\n\n        int[] count=new int[radix];\n\n        for(i=L;i&lt;=R;i++)\n        {\n            \/\/\u5f97\u5230\u5012\u6570\u7b2cd\u4f4d\u4e0a\u7684\u6570\u5b57\u662f\u51e0\n            j=getDigit(arr[i],d);\n            count[j]++;\n        }\n        \/\/\u521b\u5efacount\u2018\u6570\u7ec4\uff0ccount[0]\u4e0a\u7684\u6570\u5b57\u4e0d\u53d8\n        for(i=1;i&lt;radix;i++)\n            count[i]=count[i]+count[i-1];\n\n        \/\/\u4ece\u53f3\u5411\u5de6\u904d\u5386arr\u6570\u7ec4\n        for(i=R;i&gt;=L;i--)\n        {\n            j=getDigit(arr[i],d);\n            bucket[arr[j]-1]=arr[i];\n            count[j]--;\n        }\n\n        \/\/\u628a\u67d0\u4e00\u4f4d\u6709\u5e8f\u7684\u6570\u7ec4copy\u56de\u539f\u6570\u7ec4\n        for(i=L,j=0;i&lt;=R;i++,j++)\n        {\n            arr[i]=bucket[j];\n        }\n\n    }\n}\n\n\/\/\u8fd4\u56dex\u8fd9\u4e2a\u6570\u5728\u5012\u6570\u7b2cd\u4f4d\u4e0a\u7684\u6570\u662f\u51e0\npublic static int getDigit(int x,int d)\n{\n    return ( ( x\/ ( (int)Math.pow(10,d-1) ) ) %10 );\n}\n\n\/\/\u8fd4\u56de\u6700\u5927\u503c\u7684\u4f4d\u6570\npublic static int maxbits(int[] arr){\n    int max=Integer.MIN_VALUE;\n    for(int i=0;i&lt;arr.length;i++)\n    {\n        max=Math.max(max,arr[i]);\n    }\n    int res=0;\n    while(max!=0){\n        res++;\n        max\/=10;\n    }\n    return res;\n}\n\npublic static void main()\n{\n    int[] arr={022,021,032,001,100}\n    if(arr==null||arr.length&lt;2){\n        return;\n    }\n    radixSort(arr,0,arr.length-1,maxbits(arr));\n}\n<\/code><\/pre>\n<h3>\u6392\u5e8f\u603b\u7ed3<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155496.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155496.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929181629533\" style=\"zoom: 50%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155497.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155497.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210929181923421\" style=\"zoom:50%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155498.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155498.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom: 50%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/images2018.cnblogs.com\/blog\/849589\/201804\/849589-20180402133438219-1946132192.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/images2018.cnblogs.com\/blog\/849589\/201804\/849589-20180402133438219-1946132192.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:50%;\" \/><\/div><\/p>\n<h2>4.\u94fe\u8868<\/h2>\n<h3>\u94fe\u8868\u57fa\u7840\u77e5\u8bc6<\/h3>\n<h4>\u94fe\u8868\u7684\u6982\u5ff5<\/h4>\n<p>\u94fe\u8868\u7684\u57fa\u672c\u601d\u7ef4\u662f\uff0c\u5229\u7528\u7ed3\u6784\u4f53\u7684\u8bbe\u7f6e\uff0c\u989d\u5916\u5f00\u8f9f\u51fa\u4e00\u4efd\u5185\u5b58\u7a7a\u95f4\u53bb\u4f5c\u6307\u9488\uff0c\u5b83\u603b\u662f\u6307\u5411\u4e0b\u4e00\u4e2a\u7ed3\u70b9\uff0c\u4e00\u4e2a\u4e2a\u7ed3\u70b9\u901a\u8fc7NEXT\u6307\u9488\u76f8\u4e92\u4e32\u8054\uff0c\u5c31\u5f62\u6210\u4e86\u94fe\u8868\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155499.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155499.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/div><\/p>\n<p>\u94fe\u8868\u7684\u7ed3\u6784\u662f\u591a\u5f0f\u591a\u6837\u7684\uff0c\u5f53\u65f6\u901a\u5e38\u7528\u7684\u4e5f\u5c31\u662f\u4e24\u79cd\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155500.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155500.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155499.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155499.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/div><\/p>\n<ul>\n<li>\u65e0\u5934\u5355\u5411\u975e\u5faa\u73af\u5217\u8868\uff1a\u7ed3\u6784\u7b80\u5355\uff0c\u4e00\u822c\u4e0d\u4f1a\u5355\u72ec\u7528\u6765\u5b58\u653e\u6570\u636e\u3002\u5b9e\u9645\u4e2d\u66f4\u591a\u662f\u4f5c\u4e3a\u5176\u4ed6\u6570\u636e\u7ed3\u6784\u7684\u5b50\u7ed3\u6784\uff0c\u6bd4\u5982\u8bf4\u54c8\u5e0c\u6876\u7b49\u7b49\u3002<\/li>\n<li>\u5e26\u5934\u53cc\u5411\u5faa\u73af\u94fe\u8868\uff1a\u7ed3\u6784\u6700\u590d\u6742\uff0c\u4e00\u822c\u5355\u72ec\u5b58\u50a8\u6570\u636e\u3002\u5b9e\u9645\u4e2d\u7ecf\u5e38\u4f7f\u7528\u7684\u94fe\u8868\u6570\u636e\u7ed3\u6784\uff0c\u90fd\u662f\u5e26\u5934\u53cc\u5411\u5faa\u73af\u94fe\u8868\u3002\u8fd9\u4e2a\u7ed3\u6784\u867d\u7136\u590d\u6742\uff0c\u4f46\u662f\u4f7f\u7528\u4ee3\u7801\u5b9e\u73b0\u540e\u4f1a\u53d1\u73b0\u8fd9\u4e2a\u7ed3\u6784\u4f1a\u5e26\u6765\u5f88\u591a\u4f18\u52bf\uff0c\u5b9e\u73b0\u53cd\u800c\u7b80\u5355\u4e86\u3002<\/li>\n<\/ul>\n<p>\u63d2\u5165\u5220\u9664\u64cd\u4f5c\u53ea\u9700\u8981\u4fee\u6539\u6307\u9488\u6240\u6307\u5411\u7684\u533a\u57df\u5c31\u53ef\u4ee5\u4e86\uff0c\u4e0d\u9700\u8981\u8fdb\u884c\u5927\u91cf\u7684\u6570\u636e\u79fb\u52a8\u64cd\u4f5c\u3002\u5982\u4e0b\u56fe\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155501.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155501.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"  \/><\/div><\/p>\n<p>\u94fe\u8868\u5305\u542b<code>\u5355\u94fe\u8868\u3001\u53cc\u94fe\u8868\u3001\u5faa\u73af\u94fe\u8868<\/code>\uff0c\u5982\u4e0b\u56fe\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic4.zhimg.com\/80\/v2-fed2e1976f4fa3236e123b6313dbf467_1440w.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic4.zhimg.com\/80\/v2-fed2e1976f4fa3236e123b6313dbf467_1440w.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom: 50%;\" \/><\/div><\/p>\n<h4>\u5355\u94fe\u8868<\/h4>\n<pre><code class=\"language-c\">\/\/\u5355\u94fe\u8868\u7684\u8282\u70b9\u5b9a\u4e49\ntypedef struct Node {\n    int data;       \/\/\u6570\u636e\u7c7b\u578b\uff0c\u4f60\u53ef\u4ee5\u628aint\u578b\u7684data\u6362\u6210\u4efb\u610f\u6570\u636e\u7c7b\u578b\uff0c\u5305\u62ec\u7ed3\u6784\u4f53struct\u7b49\u590d\u5408\u7c7b\u578b\n    struct Node *next;          \/\/\u5355\u94fe\u8868\u7684\u6307\u9488\u57df\n} Node,*LinkedList;  \n\/\/Node\u8868\u793a\u7ed3\u70b9\u7684\u7c7b\u578b\uff0cLinkedList\u8868\u793a\u6307\u5411Node\u7ed3\u70b9\u7c7b\u578b\u7684\u6307\u9488\u7c7b\u578b\n\/\/\u94fe\u8868\u521d\u59cb\u5316\n\/\/\u521b\u5efa\u4e00\u4e2a\u5355\u94fe\u8868\u7684\u524d\u7f6e\u8282\u70b9\u5e76\u5411\u540e\u9010\u6b65\u6dfb\u52a0\u8282\u70b9\uff0c\u4e00\u822c\u6307\u7684\u662f\u7533\u8bf7\u7ed3\u70b9\u7684\u7a7a\u95f4\uff0c\u540c\u65f6\u5bf9\u4e00\u4e2a\u7ed3\u70b9\u8d4b\u7a7a\u503c(NULL)\nLinkedList listinit(){\n    Node *L;\n    L=(Node*)malloc(sizeof(Node));      \/\/\u5f00\u8f9f\u7a7a\u95f4 \n    if(L==NULL){                     \/\/\u5224\u65ad\u662f\u5426\u5f00\u8f9f\u7a7a\u95f4\u5931\u8d25\uff0c\u8fd9\u4e00\u6b65\u5f88\u6709\u5fc5\u8981\n        printf(&quot;\u7533\u8bf7\u7a7a\u95f4\u5931\u8d25&quot;);\n        \/\/exit(0);                  \/\/\u5f00\u8f9f\u7a7a\u95f4\u5931\u8d25\u53ef\u4ee5\u8003\u8651\u76f4\u63a5\u7ed3\u675f\u7a0b\u5e8f\n    }\n    L-&gt;next=NULL;       \/\/\u6307\u9488\u6307\u5411\u7a7a\n}<\/code><\/pre>\n<p>\u521b\u5efa\u5355\u5217\u8868\u6709\u4e24\u79cd\u65b9\u5f0f\uff0c==\u5934\u63d2\u5165\u6cd5\u4e0e\u5c3e\u63d2\u5165\u6cd5==<\/p>\n<p>\u5229\u7528\u6307\u9488\u6307\u5411\u4e0b\u4e00\u4e2a\u7ed3\u70b9\u5143\u7d20\u7684\u65b9\u5f0f\u8fdb\u884c\u9010\u4e2a\u521b\u5efa\uff0c\u4f7f\u7528\u5934\u63d2\u5165\u6cd5\u6700\u7ec8\u5f97\u5230\u7684\u7ed3\u679c\u662f\u9006\u5e8f\u7684\u3002\u5982\u56fe\u6240\u793a\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155502.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155502.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"  \/><\/div><\/p>\n<pre><code class=\"language-c\">\/\/\u5934\u63d2\u6cd5\u5efa\u7acb\u5355\u94fe\u8868\nLinkedList LinkedListCreatH() {\n    Node *L;\n    L = (Node *)malloc(sizeof(Node));   \/\/\u7533\u8bf7\u5934\u7ed3\u70b9\u7a7a\u95f4\n    L-&gt;next = NULL;                      \/\/\u521d\u59cb\u5316\u4e00\u4e2a\u7a7a\u94fe\u8868\n\n    int x;                         \/\/x\u4e3a\u94fe\u8868\u6570\u636e\u57df\u4e2d\u7684\u6570\u636e\n    while(scanf(&quot;%d&quot;,&amp;x) != EOF) {\n        Node *p;\n        p = (Node *)malloc(sizeof(Node));   \/\/\u7533\u8bf7\u65b0\u7684\u7ed3\u70b9\n        p-&gt;data = x;                     \/\/\u7ed3\u70b9\u6570\u636e\u57df\u8d4b\u503c\n        p-&gt;next = L-&gt;next;     \/\/\u5c06\u7ed3\u70b9\u63d2\u5165\u5230\u8868\u5934L--&gt;|2|--&gt;|1|--&gt;NULL\n        L-&gt;next = p;\n    }\n    return L;\n}<\/code><\/pre>\n<p>\u5982\u56fe\u6240\u793a\u4e3a\u5c3e\u63d2\u5165\u6cd5\u7684\u521b\u5efa\u8fc7\u7a0b:<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155503.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155503.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom: 67%;\" \/><\/div><\/p>\n<pre><code class=\"language-c\">\/\/\u5c3e\u63d2\u6cd5\u5efa\u7acb\u5355\u94fe\u8868\nLinkedList LinkedListCreatT() {\n    Node *L;\n    L = (Node *)malloc(sizeof(Node));   \/\/\u7533\u8bf7\u5934\u7ed3\u70b9\u7a7a\u95f4\n    L-&gt;next = NULL;                  \/\/\u521d\u59cb\u5316\u4e00\u4e2a\u7a7a\u94fe\u8868\n    Node *r;\n    r = L;                          \/\/r\u59cb\u7ec8\u6307\u5411\u7ec8\u7aef\u7ed3\u70b9\uff0c\u5f00\u59cb\u65f6\u6307\u5411\u5934\u7ed3\u70b9\n    int x;                         \/\/x\u4e3a\u94fe\u8868\u6570\u636e\u57df\u4e2d\u7684\u6570\u636e\n    while(scanf(&quot;%d&quot;,&amp;x) != EOF) {\n        Node *p;\n        p = (Node *)malloc(sizeof(Node));   \/\/\u7533\u8bf7\u65b0\u7684\u7ed3\u70b9\n        p-&gt;data = x;                     \/\/\u7ed3\u70b9\u6570\u636e\u57df\u8d4b\u503c\n        r-&gt;next = p;            \/\/\u5c06\u7ed3\u70b9\u63d2\u5165\u5230\u8868\u5934L--&gt;|1|--&gt;|2|--&gt;NULL\n        r = p;\n    }\n    r-&gt;next = NULL;\n    return L;\n}<\/code><\/pre>\n<pre><code class=\"language-c\">\/\/\u904d\u5386\u5355\u94fe\u8868\n\/\/\u904d\u5386\u8f93\u51fa\u5355\u94fe\u8868\nvoid printList(LinkedList L){\n    Node *p=L-&gt;next;\n    int i=0;\n    while(p){\n        printf(&quot;\u7b2c%d\u4e2a\u5143\u7d20\u7684\u503c\u4e3a:%d\\n&quot;,++i,p-&gt;data);\n        p=p-&gt;next;\n    }\n}\n\/\/\u94fe\u8868\u5185\u5bb9\u7684\u4fee\u6539\uff0c\u5728\u94fe\u8868\u4e2d\u4fee\u6539\u503c\u4e3ax\u7684\u5143\u7d20\u53d8\u4e3a\u4e3ak\u3002\nLinkedList LinkedListReplace(LinkedList L,int x,int k) {\n    Node *p=L-&gt;next;\n    int i=0;\n    while(p){\n        if(p-&gt;data==x){\n            p-&gt;data=k;\n        }\n        p=p-&gt;next;\n    }\n    return L;\n}<\/code><\/pre>\n<p>\u5355\u94fe\u8868\u7684\u63d2\u5165\u4e0e\u5220\u9664<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155504.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155504.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155505.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155505.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code class=\"language-c\">\/\/\u5355\u94fe\u8868\u7684\u63d2\u5165\u4e0e\u5220\u9664\nLinkedList LinkedListInsert(LinkedList L,int i,int x) {\n    Node *pre;                      \/\/pre\u4e3a\u524d\u9a71\u7ed3\u70b9\n    pre = L;\n    int tempi = 0;\n    for (tempi = 1; tempi &lt; i; tempi++) {\n        pre = pre-&gt;next;                 \/\/\u67e5\u627e\u7b2ci\u4e2a\u4f4d\u7f6e\u7684\u524d\u9a71\u7ed3\u70b9\n    }\n    Node *p;                                \/\/\u63d2\u5165\u7684\u7ed3\u70b9\u4e3ap\n    p = (Node *)malloc(sizeof(Node));\n    p-&gt;data = x;\n    p-&gt;next = pre-&gt;next;\n    pre-&gt;next = p;\n\n    return L;\n}\n\nLinkedList LinkedListDelete(LinkedList L,int x) {\n    Node *p,*pre;                   \/\/pre\u4e3a\u524d\u9a71\u7ed3\u70b9\uff0cp\u4e3a\u67e5\u627e\u7684\u7ed3\u70b9\u3002\n    p = L-&gt;next;\n\n    while(p-&gt;data != x) {              \/\/\u67e5\u627e\u503c\u4e3ax\u7684\u5143\u7d20\n        pre = p;\n        p = p-&gt;next;\n    }\n    pre-&gt;next = p-&gt;next;          \/\/\u5220\u9664\u64cd\u4f5c\uff0c\u5c06\u5176\u524d\u9a71next\u6307\u5411\u5176\u540e\u7ee7\u3002\n    free(p);\n\n    return L;\n}<\/code><\/pre>\n<h4>\u53cc\u94fe\u8868<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155506.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155506.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u53cc\u5411\u94fe\u8868\u521b\u5efa\u7684\u8fc7\u7a0b\u53ef\u4ee5\u5206\u4e3a\uff1a\u521b\u5efa\u5934\u7ed3\u70b9-&gt;\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u7ed3\u70b9-&gt;\u5c06\u5934\u7ed3\u70b9\u548c\u65b0\u7ed3\u70b9\u76f8\u4e92\u94fe\u63a5-&gt;\u518d\u5ea6\u521b\u5efa\u65b0\u7ed3\u70b9<\/p>\n<pre><code class=\"language-c\">typedef struct line{\n    int data;           \/\/data\n    struct line *pre;   \/\/pre node\n    struct line *next;  \/\/next node\n}line,*a;\n\/\/\u5206\u522b\u8868\u793a\u8be5\u7ed3\u70b9\u7684\u524d\u9a71(pre)\uff0c\u540e\u7ee7(next)\uff0c\u4ee5\u53ca\u5f53\u524d\u6570\u636e(data)\n\/\/\u521b\u5efa\u53cc\u94fe\u8868\nline* initLine(line * head){\n    int number,pos=1,input_data;\n    \/\/\u4e09\u4e2a\u53d8\u91cf\u5206\u522b\u4ee3\u8868\u7ed3\u70b9\u6570\u91cf\uff0c\u5f53\u524d\u4f4d\u7f6e\uff0c\u8f93\u5165\u7684\u6570\u636e\n    printf(&quot;\u8bf7\u8f93\u5165\u521b\u5efa\u7ed3\u70b9\u7684\u5927\u5c0f\\n&quot;);\n    scanf(&quot;%d&quot;,&amp;number);\n    if(number&lt;1){return NULL;} \/\/\u8f93\u5165\u975e\u6cd5\u76f4\u63a5\u7ed3\u675f\n    \/\/\/\/\/\/\u5934\u7ed3\u70b9\u521b\u5efa\/\/\/\/\/\/\/\n    head=(line*)malloc(sizeof(line));\n    head-&gt;pre=NULL;\n    head-&gt;next=NULL;\n    printf(&quot;\u8f93\u5165\u7b2c%d\u4e2a\u6570\u636e\\n&quot;,pos++);\n    scanf(&quot;%d&quot;,&amp;input_data);\n    head-&gt;data=input_data;\n\n    line * list=head;\n    while (pos&lt;=number) {\n        line * body=(line*)malloc(sizeof(line));\n        body-&gt;pre=NULL;\n        body-&gt;next=NULL;\n        printf(&quot;\u8f93\u5165\u7b2c%d\u4e2a\u6570\u636e\\n&quot;,pos++);\n        scanf(&quot;%d&quot;,&amp;input_data);\n        body-&gt;data=input_data;\n\n        list-&gt;next=body;\n        body-&gt;pre=list;\n        list=list-&gt;next;\n    }\n    return head;\n}<\/code><\/pre>\n<p>\u53cc\u5411\u94fe\u8868\u7684\u904d\u5386\u3001\u63d2\u5165\u4e0e\u5220\u9664\uff1a<\/p>\n<pre><code class=\"language-c\">\/\/\u904d\u5386\u53cc\u94fe\u8868,\u540c\u65f6\u6253\u5370\u5143\u7d20\u6570\u636e\nvoid printLine(line *head){\n    line *list = head;\n    int pos=1;\n    while(list){\n        printf(&quot;\u7b2c%d\u4e2a\u6570\u636e\u662f:%d\\n&quot;,pos++,list-&gt;data);\n        list=list-&gt;next;\n    }\n}<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic3.zhimg.com\/80\/v2-576b1c27abfe76baef41c002ba94fe62_1440w.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic3.zhimg.com\/80\/v2-576b1c27abfe76baef41c002ba94fe62_1440w.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code class=\"language-c\">\/\/\u63d2\u5165\u6570\u636e\nline * insertLine(line * head,int data,int add){\n    \/\/\u4e09\u4e2a\u53c2\u6570\u5206\u522b\u4e3a\uff1a\u8fdb\u884c\u6b64\u64cd\u4f5c\u7684\u53cc\u94fe\u8868\uff0c\u63d2\u5165\u7684\u6570\u636e\uff0c\u63d2\u5165\u7684\u4f4d\u7f6e\n    \/\/\u65b0\u5efa\u6570\u636e\u57df\u4e3adata\u7684\u7ed3\u70b9\n    line * temp=(line*)malloc(sizeof(line));\n    temp-&gt;data=data;\n    temp-&gt;pre=NULL;\n    temp-&gt;next=NULL;\n    \/\/\u63d2\u5165\u5230\u94fe\u8868\u5934\uff0c\u8981\u7279\u6b8a\u8003\u8651\n    if (add==1) {\n        temp-&gt;next=head;\n        head-&gt;pre=temp;\n        head=temp;\n    }else{\n        line * body=head;\n        \/\/\u627e\u5230\u8981\u63d2\u5165\u4f4d\u7f6e\u7684\u524d\u4e00\u4e2a\u7ed3\u70b9\n        for (int i=1; i&lt;add-1; i++) {\n            body=body-&gt;next;\n        }\n        \/\/\u5224\u65ad\u6761\u4ef6\u4e3a\u771f\uff0c\u8bf4\u660e\u63d2\u5165\u4f4d\u7f6e\u4e3a\u94fe\u8868\u5c3e\n        if (body-&gt;next==NULL) {\n            body-&gt;next=temp;\n            temp-&gt;pre=body;\n        }else{\n            body-&gt;next-&gt;pre=temp;\n            temp-&gt;next=body-&gt;next;\n            body-&gt;next=temp;\n            temp-&gt;pre=body;\n        }\n    }\n    return head;\n}<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic4.zhimg.com\/80\/v2-5f99468c24519ecc8a88c57fb30d78a3_1440w.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic4.zhimg.com\/80\/v2-5f99468c24519ecc8a88c57fb30d78a3_1440w.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\/\/\u5220\u9664\u5143\u7d20\nline * deleteLine(line * head,int data){\n    \/\/\u8f93\u5165\u7684\u53c2\u6570\u5206\u522b\u4e3a\u8fdb\u884c\u6b64\u64cd\u4f5c\u7684\u53cc\u94fe\u8868\uff0c\u9700\u8981\u5220\u9664\u7684\u6570\u636e\n    line * list=head;\n    \/\/\u904d\u5386\u94fe\u8868\n    while (list) {\n        \/\/\u5224\u65ad\u662f\u5426\u4e0e\u6b64\u5143\u7d20\u76f8\u7b49\n        \/\/\u5220\u9664\u8be5\u70b9\u65b9\u6cd5\u4e3a\u5c06\u8be5\u7ed3\u70b9\u524d\u4e00\u7ed3\u70b9\u7684next\u6307\u5411\u8be5\u8282\u70b9\u540e\u4e00\u7ed3\u70b9\n        \/\/\u540c\u65f6\u5c06\u8be5\u7ed3\u70b9\u7684\u540e\u4e00\u7ed3\u70b9\u7684pre\u6307\u5411\u8be5\u8282\u70b9\u7684\u524d\u4e00\u7ed3\u70b9\n        if (list-&gt;data==data) {\n            list-&gt;pre-&gt;next=list-&gt;next;\n            list-&gt;next-&gt;pre=list-&gt;pre;\n            free(list);\n            printf(&quot;--\u5220\u9664\u6210\u529f--\\n&quot;);\n            return head;\n        }\n        list=list-&gt;next;\n    }\n    printf(&quot;Error:\u6ca1\u6709\u627e\u5230\u8be5\u5143\u7d20\uff0c\u6ca1\u6709\u4ea7\u751f\u5220\u9664\\n&quot;);\n    return head;\n}<\/code><\/pre>\n<h4>\u4e24\u5355\u94fe\u8868\u76f8\u4ea4\u95ee\u9898<\/h4>\n<h5>\u9898\u76ee<\/h5>\n<ul>\n<li>\u7ed9\u5b9a\u4e24\u4e2a\u53ef\u80fd\u662f\u73af\u4e5f\u53ef\u80fd\u65e0\u73af\u7684\u5355\u94fe\u8868\uff0c\u5934\u8282\u70b9head1\u548chead2.\u3002\u8bf7\u5b9e\u73b0\u4e00\u4e2a\u51fd\u6570\uff0c\u5982\u679c\u4e24\u4e2a\u94fe\u8868\u76f8\u4ea4\uff0c\u8bf7\u8fd4\u56de\u76f8\u4ea4\u7684\u7b2c\u4e00\u4e2a\u8282\u70b9\uff0c\u5982\u679c\u4e0d\u76f8\u4ea4\uff0c\u8fd4\u56denull\u3002<\/li>\n<\/ul>\n<h5>\u8981\u6c42<\/h5>\n<ul>\n<li>\u5982\u679c\u4e24\u4e2a\u94fe\u8868\u957f\u5ea6\u4e4b\u548c\u4e3aN\uff0c\u65f6\u95f4\u590d\u6742\u5ea6\u8bf7\u8fbe\u5230O(N)\uff0c\u989d\u5916\u7a7a\u95f4\u590d\u6742\u5ea6\u8bf7\u8fbe\u5230O(1)\u3002<\/li>\n<\/ul>\n<h5>\u5206\u6790<\/h5>\n<p>\u672c\u9898\u76ee\u53ef\u4ee5\u62c6\u5206\u4e3a\uff1a<\/p>\n<h6>\u95ee\u98981.\u5982\u4f55\u5224\u65ad\u5355\u94fe\u8868\u6709\u73af\u8fd8\u662f\u65e0\u73af\uff0c\u6709\u73af\u8fd4\u56de\u7b2c\u4e00\u4e2a\u5165\u73af\u8282\u70b9\uff0c\u65e0\u73af\u8fd4\u56denull\u3002<\/h6>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155507.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155507.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/div><\/p>\n<p>\u7b2c\u4e00\u79cd\u65b9\u6cd5<\/p>\n<p>\u53ef\u4ee5\u5229\u7528\u54c8\u5e0c\u8868\uff08hashSet\uff09\uff1a\u904d\u5386\u6bcf\u4e00\u4e2a\u8282\u70b9\uff0c\u60f3\u8981\u628a\u6bcf\u4e2a\u7ed3\u70b9\u90fd\u5b58\u653e\u5230\u54c8\u5e0c\u8868\u4e2d\uff1b\u4f46\u662f\u54c8\u5e0c\u8868\u4e2d\u5df2\u7ecf\u5b58\u8fc7\u7684\u8282\u70b9\u5c31\u5b58\u4e0d\u8fdb\u53bb\u4e86\uff08\u7b2c\u4e00\u4e2a\u4e0d\u80fd\u5b58\u5165\u54c8\u5e0c\u8868\u7684\u8282\u70b9\u5c31\u662f\u7b2c\u4e00\u4e2a\u5165\u73af\u7684\u8282\u70b9\uff09\u3002<\/p>\n<blockquote>\n<p>\u6ce8\uff1a\u9700\u8981\u4e00\u4e2a\u54c8\u5e0c\u8868\uff0c\u7a7a\u95f4\u590d\u6742\u5ea6O(n)\u4e0d\u6ee1\u8db3\u3002<\/p>\n<\/blockquote>\n<p>\u7b2c\u4e8c\u79cd\u65b9\u6cd5<\/p>\n<p>\u8bbe\u5b9a\u4e24\u4e2a\u6307\u9488\uff1a\u4e00\u4e2a\u5feb\u6307\u9488\uff08\u8d70\u4e24\u6b65\uff09\uff0c\u4e00\u4e2a\u6162\u6307\u9488\uff08\u8d70\u4e00\u6b65\uff09\uff1b\u5f53\u5feb\u6307\u9488\u548c\u6162\u6307\u9488\u76f8\u9047\u7684\u65f6\u5019\uff0c\u5feb\u6307\u9488\u56de\u5230\u5934\u7ed3\u70b9\u7684\u4f4d\u7f6e\uff0c\u548c\u6162\u6307\u9488\u4e00\u8d77\u4ee5\u4e00\u6b65\u7684\u6b65\u5e45\u8d70\uff0c\u76f8\u9047\u7684\u8282\u70b9\u5c31\u662f\u7b2c\u4e00\u4e2a\u5165\u73af\u8282\u70b9\u3002<\/p>\n<pre><code class=\"language-java\">public static Node getLoopNode(Node head) {\n    if (head == null || head.next == null || head.next.next == null) {\n        return null;\n    }\n    Node n1 = head.next; \/\/ n1 -&gt; slow\n    Node n2 = head.next.next; \/\/ n2 -&gt; fast\n    while (n1 != n2) {\n        if (n2.next == null || n2.next.next == null) {\n            return null;\n        }\n        n2 = n2.next.next;\n        n1 = n1.next;\n    }\n    n2 = head; \/\/ n2 -&gt; walk again from head\n    while (n1 != n2) {\n        n1 = n1.next;\n        n2 = n2.next;\n    }\n    return n1;\n}<\/code><\/pre>\n<h6>\u95ee\u98982.\u4e24\u4e2a\u65e0\u73af\u94fe\u8868\u600e\u4e48\u627e\u5230\u7b2c\u4e00\u4e2a\u76f8\u4ea4\u7684\u8282\u70b9<\/h6>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155508.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155508.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/div><\/p>\n<p>\u7b2c\u4e00\u79cd\u65b9\u6cd5<br \/>\n\u5229\u7528\u54c8\u5e0c\u8868\uff1a<br \/>\n\u904d\u5386\u7b2c\u4e00\u4e2a\u94fe\u8868\uff0c\u628a\u6240\u6709\u7684\u8282\u70b9\u90fd\u5b58\u5165\u5230\u54c8\u5e0c\u8868\u4e2d\uff08\u56e0\u4e3a\u662f\u65e0\u73af\u94fe\u8868\uff0c\u6240\u4ee5\u4e00\u5b9a\u53ef\u4ee5\u5b58\u8fdb\u53bb\uff09\uff08\u54c8\u5e0c\u8868\u4e2d\u5b58\u653e\u7684\u8282\u70b9\u7684\u5185\u5b58\u5730\u5740\uff0c\u548c\u8282\u70b9\u7684\u503c\u6ca1\u6709\u5173\u7cfb\uff09\uff1b\u904d\u5386\u7b2c\u4e8c\u4e2a\u94fe\u8868\u7684\u8282\u70b9\uff0c\u6bcf\u904d\u5386\u4e00\u4e2a\u67e5\u770b\u54c8\u5e0c\u8868\u4e2d\u662f\u5426\u5df2\u7ecf\u6709\u4e86\u8fd9\u4e2a\u8282\u70b9\uff0c\u54c8\u5e0c\u8868\u4e2d\u7b2c\u4e00\u4e2a\u5b58\u4e0d\u8fdb\u53bb\u7684\u8282\u70b9\u5c31\u662f\u7b2c\u4e00\u4e2a\u76f8\u4ea4\u8282\u70b9\u3002<br \/>\n\u54c8\u5e0c\u8868\u7a7a\u95f4\u590d\u6742\u5ea6\u662fO(n)\uff0c\u4e0d\u6ee1\u8db3\u9898\u76ee\u8981\u6c42\u3002<\/p>\n<p>\u7b2c\u4e8c\u79cd\u65b9\u6cd5<\/p>\n<p>1.\u5148\u786e\u5b9a\u4e24\u4e2a\u94fe\u8868\u7684\u957f\u5ea6\u5dee<br \/>\n2.\u4e24\u4e2a\u94fe\u8868\u5728\u79fb\u52a8\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5982\u679c\u76f8\u4ea4\u4e86\uff08\u6839\u636e\u94fe\u8868\u7684\u7279\u6b8a\u6027\uff0c\u53ea\u6709\u4e00\u4e2anext\u6307\u9488\uff0c\u53ea\u80fd\u8fde\u63a5\u4e00\u4e2a\u4e0b\u4e00\u4e2a\u7ed3\u70b9\uff0c\u6240\u4ee5\u7b2c\u4e00\u4e2a\u516c\u5171\u7ed3\u70b9\u4e4b\u540e\uff0c\u53ea\u77e5\u9053\u94fe\u8868\u7684\u7ed3\u5c3e\u90fd\u662f\u76f8\u540c\u7684\uff09\uff08\u53d8\u91cf\u4e2d\u5b58\u653e\u7684\u662f\u5185\u5b58\u5730\u5740\uff0c\u548c\u6570\u636e\u65e0\u5173\uff09\uff0c\u90a3\u4e48\u672b\u5c3e\u7684\u5185\u5b58\u5730\u5740\u4e00\u5b9a\u662f\u76f8\u540c\u7684<br \/>\n3.\u5982\u679c\u6700\u540e\u7684\u76f8\u7b49\uff0c\u90a3\u4e48\u8bf4\u660e\u662f\u6709\u76f8\u4ea4\u7684\u8282\u70b9\u7684\uff0c\u4f46\u662f\u4e0d\u4e00\u5b9a\u662f\u6700\u540e\u4e00\u4e2a\u3002<br \/>\n4.\u8ba9\u957f\u7684\u8282\u70b9\u4ece\u5934\u5f00\u59cb\uff0c\u5148\u8d70\u8ddd\u79bb\u5dee\u4e2a\u8ddd\u79bb\uff1b\u77ed\u7684\u4ece\u5934\u5f00\u59cb\u8d70\uff0c\u76f8\u7b49\u7684\u5c31\u662f\u4ed6\u4eec\u76f8\u4ea4\u7684\u8282\u70b9<\/p>\n<pre><code class=\"language-java\">public static Node noLoop(Node head1, Node head2) {\n    if (head1 == null || head2 == null) {\n        return null;\n    }\n    Node cur1 = head1;\n    Node cur2 = head2;\n    int n = 0;\n    while (cur1.next != null) {\n        n++;\n        cur1 = cur1.next;\n    }\n    while (cur2.next != null) {\n        n--;\n        cur2 = cur2.next;\n    }\n    if (cur1 != cur2) {\n        return null;\n    }\n    cur1 = n &gt; 0 ? head1 : head2;\n    cur2 = cur1 == head1 ? head2 : head1;\n    n = Math.abs(n);\n    while (n != 0) {\n        n--;\n        cur1 = cur1.next;\n    }\n    while (cur1 != cur2) {\n        cur1 = cur1.next;\n        cur2 = cur2.next;\n    }\n    return cur1;\n}\n<\/code><\/pre>\n<h6>\u95ee\u9898\u4e09\uff1a\u5982\u4f55\u5224\u65ad\u4e24\u4e2a\u6709\u73af\u94fe\u8868\u662f\u5426\u76f8\u4ea4\uff0c\u76f8\u4ea4\u5219\u8fd4\u56de\u7b2c\u4e00\u4e2a\u76f8\u4ea4\u8282\u70b9\uff0c\u4e0d\u76f8\u4ea4\u5219\u8fd4\u56denull\u3002<\/h6>\n<p>\u8003\u8651\u95ee\u9898\u4e09\u7684\u65f6\u5019\uff0c\u6211\u4eec\u5df2\u7ecf\u5f97\u5230\u4e86\u4e24\u4e2a\u94fe\u8868\u5404\u81ea\u7684\u7b2c\u4e00\u4e2a\u5165\u73af\u8282\u70b9\uff0c\u5047\u8bbe\u94fe\u8868 1 \u7684\u7b2c\u4e00\u4e2a\u5165\u73af\u8282\u70b9\u8bb0\u4e3aloop1\uff0c\u94fe\u88682 \u7684\u7b2c\u4e00\u4e2a\u5165\u73af\u8282\u70b9\u8bb0\u4e3aloop2\u3002\u4ee5\u4e0b\u662f\u89e3\u51b3\u95ee\u9898\u4e09\u7684\u8fc7\u7a0b\u3002<\/p>\n<p>1\uff0e\u5982\u679cloop1==loop2\uff0c\u90a3\u4e48\u4e24\u4e2a\u94fe\u8868\u7684\u62d3\u6251\u7ed3\u6784\u5982\u56fe<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20201209104650722.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzQyNDgzMzQx,size_16,color_FFFFFF,t_70'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20201209104650722.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzQyNDgzMzQx,size_16,color_FFFFFF,t_70\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom:50%;\" \/><\/div><\/p>\n<p>\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u53ea\u8981\u8003\u8651\u94fe\u88681 \u4ece\u5934\u5f00\u59cb\u5230loop1 \u8fd9\u4e00\u6bb5\u4e0e\u94fe\u88682 \u4ece\u5934\u5f00\u59cb\u5230loop2 \u8fd9\u4e00\u6bb5\uff0c\u5728\u90a3\u91cc\u7b2c\u4e00\u6b21\u76f8\u4ea4\u5373\u53ef\uff0c\u800c\u4e0d\u7528\u8003\u8651\u8fdb\u73af\u8be5\u600e\u4e48\u5904\u7406\uff0c\u8fd9\u5c31\u4e0e\u95ee\u9898\u4e8c\u7c7b\u4f3c\uff0c\u53ea\u4e0d\u8fc7\u95ee\u9898\u4e8c\u662f\u628anull \u4f5c\u4e3a\u4e00\u4e2a\u94fe\u8868\u7684\u7ec8\u70b9\uff0c\u800c\u8fd9\u91cc\u662f\u628aloop1(loop2)\u4f5c\u4e3a\u94fe\u8868\u7684\u7ec8\u70b9\u3002\u4f46\u662f\u5224\u65ad\u7684\u4e3b\u8981\u8fc7\u7a0b\u662f\u76f8\u540c\u7684\u3002<\/p>\n<p>2\uff0e\u5982\u679cloop1!=loop2\uff0c\u4e24\u4e2a\u94fe\u8868\u4e0d\u76f8\u4ea4\u7684\u62d3\u6251\u7ed3\u6784\u5982\u56fe2-9 \u6240\u793a\u3002\u4e24\u4e2a\u94fe\u8868\u76f8\u4ea4\u7684\u62d3\u6251\u7ed3\u6784\u5982\u56fe2-10 \u6240\u793a\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155509.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155509.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom:33%;\" \/><\/div><\/p>\n<p>\u5982\u4f55\u5206\u8fa8\u662f\u8fd9\u4e24\u79cd\u62d3\u6251\u7ed3\u6784\u7684\u54ea\u4e00\u79cd\u5462\uff1f\u8fdb\u5165\u6b65\u9aa43\u3002<br \/>\n3\uff0e\u8ba9\u94fe\u88681 \u4eceloop1 \u51fa\u53d1\uff0c\u56e0\u4e3aloop1 \u548c\u4e4b\u540e\u7684\u6240\u6709\u8282\u70b9\u90fd\u5728\u73af\u4e0a\uff0c\u6240\u4ee5 \u5c06\u6765\u4e00\u5b9a\u80fd\u56de\u5230 loop1\u3002<\/p>\n<p>\u5982\u679c\u56de\u5230loop1 \u4e4b\u524d \u5e76\u6ca1\u6709\u9047\u5230loop2\uff0c\u8bf4\u660e\u4e24\u4e2a\u94fe\u8868\u7684\u62d3\u6251\u7ed3\u6784\u5982\u56fe2-9 \u6240\u793a\uff0c\u4e5f\u5c31\u662f \u4e0d\u76f8\u4ea4\uff0c\u76f4\u63a5\u8fd4\u56de null\uff1b<br \/>\n\u5982\u679c\u56de\u5230loop1 \u4e4b\u524d \u9047\u5230\u4e86loop2\uff0c\u8bf4\u660e\u4e24\u4e2a\u94fe\u8868\u7684\u62d3\u6251\u7ed3\u6784\u5982\u56fe2-10\u6240\u793a\uff0c\u4e5f\u5c31\u662f \u76f8\u4ea4\u3002\u56e0\u4e3a loop1 \u548c loop2 \u90fd\u5728\u4e24\u6761\u94fe\u8868\u4e0a\uff0c\u53ea\u4e0d\u8fc7loop1 \u662f\u79bb\u94fe\u88681 \u8f83\u8fd1\u7684\u8282\u70b9\uff0cloop2 \u662f\u79bb\u94fe\u88682 \u8f83\u8fd1\u7684\u8282\u70b9\u3002\u6240\u4ee5\uff0c\u6b64\u65f6\u8fd4\u56deloop1 \u6216loop2 \u90fd\u53ef\u4ee5\u3002<br \/>\n\u95ee\u9898\u4e09\u7684\u5177\u4f53\u5b9e\u73b0\u53c2\u770b\u5982\u4e0b\u4ee3\u7801\u4e2d\u7684 bothLoop \u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-java\">public static Node bothLoop(Node head1, Node loop1, Node head2, Node loop2) {\n    Node cur1 = null;\n    Node cur2 = null;\n    if (loop1 == loop2) {\n        cur1 = head1;\n        cur2 = head2;\n        int n = 0;\n        while (cur1 != loop1) {\n            n++;\n            cur1 = cur1.next;\n        }\n        while (cur2 != loop2) {\n            n--;\n            cur2 = cur2.next;\n        }\n        cur1 = n &gt; 0 ? head1 : head2;\n        cur2 = cur1 == head1 ? head2 : head1;\n        n = Math.abs(n);\n        while (n != 0) {\n            n--;\n            cur1 = cur1.next;\n        }\n        while (cur1 != cur2) {\n            cur1 = cur1.next;\n            cur2 = cur2.next;\n        }\n        return cur1;\n    } else {\n        cur1 = loop1.next;\n        while (cur1 != loop1) {\n            if (cur1 == loop2) {\n                return loop1;\n            }\n            cur1 = cur1.next;\n        }\n        return null;\n    }\n}<\/code><\/pre>\n<h3>\u54c8\u5e0c\u8868<\/h3>\n<p>UnOrderMap  UnSortedMap     UnOrderSet  UnSortedSet--&gt;C++<\/p>\n<p>Map\uff1aKey -&gt; Value<\/p>\n<p>Set\uff1aKey<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155510.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155510.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210930173545947\" style=\"zoom: 80%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155511.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155511.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210930173714951\" style=\"zoom: 80%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155512.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155512.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20210930173743357\" style=\"zoom: 80%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155513.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155513.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20211011213523252\" style=\"zoom: 50%;\" \/><\/div><\/p>\n<h4>\u53cd\u8f6c\u5355\u5411\u94fe\u8868\u548c\u53cc\u5411\u94fe\u8868<\/h4>\n<pre><code class=\"language-java\">\/\/\u53cd\u8f6c\u5355\u5411\u94fe\u8868\npublic static Node reverseOne(Node head){\n    if(head == Null||head.next == Null){\n        return head;\n    }\n    Node new_head = Null;\n    while(head != Null){\n        Node tmp = head.next;\n        head.next = new_head;\n        new_head = head;\n        head = tmp;\n    }\n    return new_head;\n}<\/code><\/pre>\n<pre><code class=\"language-java\">\/\/\u53cd\u8f6c\u53cc\u5411\u94fe\u8868\npublic static DoubleNode reverse(DoubleNode head) {\n    if (head == null || head.next == null) {\n        return head;\n    }\n    DoubleNode pre = null;\n    DoubleNode next = null;\n    while (head != null) {\n        next = head.next;\n        head.next = pre;\n        head.last = next;\n        pre = head;\n        head = next;\n    }\n    return pre;\n}<\/code><\/pre>\n<h4>\u6253\u5370\u4e24\u4e2a\u6709\u5e8f\u5217\u8868\u7684\u516c\u5171\u90e8\u5206<\/h4>\n<p>\u4e0a\u4e0b\u8fdb\u884c\u6bd4\u8f83\uff0c\u503c\u5c0f\u7684\u90e8\u5206\u6307\u9488\u540e\u79fb\u518d\u6bd4\u8f83\uff0c\u77e5\u9053\u5176\u4e2d\u4e00\u4e2a\u6570\u7ec4\u8d8a\u754c\u3002<\/p>\n<pre><code class=\"language-java\">public static void printCommonPart(Node head1 , Node head2){\n    System.out.println(&quot;common part:&quot;);\n    while(head1!=null &amp;&amp; head2!=null){\n        if(head1.value&lt;head2.value){\n            head1=head1.next;\n        }else if(head1.value &gt;head2.value){\n            head2=head2.next;\n        }else {\n            System.out.println(head1.value + &quot;&quot;);\n            head1 = head1.next;\n            head2 = head2.next;\n        }\n    }\n    System.out.println();\n}<\/code><\/pre>\n<h4>\u5224\u65ad\u5355\u94fe\u8868\u662f\u5426\u662f\u56de\u6587\u7ed3\u6784<\/h4>\n<ol>\n<li>\u5229\u7528\u6808\u5148\u8fdb\u540e\u51fa\u7684\u7279\u6027\uff0c\u5c06\u94fe\u8868\u4e2d\u7684\u5143\u7d20\u653e\u8fdb\u6808\u5185\uff0c\u518d\u5c06\u6808\u5185\u5143\u7d20\u63d0\u51fa\u505a\u6bd4\u8f83\uff0c\u82e5\u5168\u90e8\u76f8\u7b49\u5219\u662f\u56de\u6587\u7ed3\u6784\u3002<\/li>\n<li>\u5c06\u6808\u540e\u534a\u8fb9\u7684\u5143\u7d20\u653e\u5165\u6808\u4e0e\u524d\u4e00\u534a\u5143\u7d20\u4f5c\u6bd4\u8f83\uff0c\u82e5\u5168\u90e8\u76f8\u7b49\u5219\u8bc1\u660e\u662f\u56de\u6587\u7ed3\u6784\uff08\u5b9e\u73b0\u65b9\u5f0f\uff1a\u5feb\u6162\u6307\u9488\uff09\u3002<\/li>\n<li>\u6700\u4f18\u65b9\u6cd5\uff0c\u53f3\u4fa7\u94fe\u8868\u53cd\u5411\uff0c\u4f9d\u6b21\u4e0e\u5de6\u8fb9\u4f5c\u6bd4\u8f83\uff0c\u5168\u90e8\u76f8\u7b49\u5219\u662f\u56de\u6587\u7ed3\u6784\u3002<\/li>\n<\/ol>\n<pre><code class=\"language-java\">package class04;\n\nimport java.util.Stack;\n\npublic class Code04_IsPalindromeList {\n\n    public static class Node {\n        public int value;\n        public Node next;\n\n        public Node(int data) {\n            this.value = data;\n        }\n    }\n    \/\/ need n extra space\n    public static boolean isPalindrome1(Node head) {\n        Stack&lt;Node&gt; stack = new Stack&lt;Node&gt;();\/\/\u65b0\u5efa\u6808\n        Node cur = head;\/\/\u904d\u5386\u94fe\u8868\u7528\u7684\uff0c\u53e6\u5916\u4e00\u4e2aNode head\n        while (cur != null) {\/\/\u538b\u6808\n            stack.push(cur);\n            cur = cur.next;\n        }\n        while (head != null) {\n            if (head.value != stack.pop().value) {\n                return false;\n            }\n            head = head.next;\n        }\n        return true;\n    }<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155514.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155514.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<h4>\u5c06\u5355\u94fe\u8868\u8f6c\u5316\u6210\u5de6\u8fb9\u5c0f\uff0c\u4e2d\u95f4\u76f8\u7b49\uff0c\u5de6\u8fb9\u5927\u7684\u5f62\u5f0f\u3002<\/h4>\n<pre><code class=\"language-java\">\/\/\u94fe\u8868\u7ed3\u6784\u5982\u4e0b\uff1a\npublic static class Node {\n    public Node next;\n    public int value;\n\n    public Node(int data) {\n        value = data;\n    }\n}<\/code><\/pre>\n<h5>\u57fa\u7840\u89e3\u6cd5<\/h5>\n<p>\u601d\u8def<\/p>\n<ol>\n<li>\u6309\u94fe\u8868\u987a\u5e8f\uff0c\u7528\u6570\u7ec4\u88c5\u6bcf\u4e00\u4e2a\u8282\u70b9 <\/li>\n<li>\u7528\u8377\u5170\u56fd\u65d7\u7b97\u6cd5\u5bf9\u6570\u7ec4\u6392\u5e8f\uff0c\u5176\u5b9e\u5c31\u662f\u5feb\u62cd\u7684partition\u8fc7\u7a0b<\/li>\n<li>\u5c06\u6570\u7ec4\u8fd8\u539f\u4e3a\u94fe\u8868<\/li>\n<\/ol>\n<pre><code class=\"language-java\">public static Node listPartition1(Node head, int pivot) {\n    if (head == null) {\n        return head;\n    }\n    Node cur = head;\n    int i = 0;\n    while (cur != null) {\n        i++;\n        cur = cur.next;\n    }\n    Node[] nodeArr = new Node[i];\n    cur = head;\n    \/\/ \u628a\u94fe\u8868\u7684\u503c\u590d\u5236\u5230\u6570\u7ec4\u4e2d\n    for(i = 0; i &lt; nodeArr.length; i++) {\n        nodeArr[i] = cur;\n        cur = cur.next;\n    }\n    \/\/ \u5bf9\u6570\u636e\u8fdb\u884c\u201c\u8377\u5170\u56fd\u65d7\u201d\u5206\u7ec4\n    arrPartition(nodeArr, pivot);\n    \/\/ \u91cd\u65b0\u628a\u94fe\u8868\u8fde\u63a5\n    for(i = 1; i &lt; nodeArr.length; i++) {\n        nodeArr[i - 1].next = nodeArr[i];\n    }\n    nodeArr[i - 1].next = null;\n    return nodeArr[0];\n}\n\/\/\/ \u8377\u5170\u56fd\u65d7\u7b97\u6cd5\npublic static void arrPartition(Node[] nodeArr, int pivot) {\n    int more = nodeArr.length;\n    int less = -1;\n    int i = 0;\n    while(i != more) {\n        if (nodeArr[i].value &lt; pivot) {\n            less++;\n            swap(nodeArr, less, i);\n            i++;\n        }else if(nodeArr[i].value &gt; pivot) {\n            more--;\n            swap(nodeArr, i, more);\n        }else {\n            i++;\n        }\n    }\n}<\/code><\/pre>\n<h5>\u8fdb\u9636\u89e3\u6cd5<\/h5>\n<p>\u601d\u8def<\/p>\n<ol>\n<li>\u4f7f\u75286\u4e2a\u6307\u9488\u5efa\u7acb\u5c0f\u4e8e\uff0c\u7b49\u4e8e\uff0c\u5927\u4e8epivot\u7684\u94fe\u8868\u533a\u57df<\/li>\n<li>\u6bcf\u4e00\u6b21\u904d\u5386\u90fd\u66f4\u65b0\u5bf9\u5e94\u533a\u57df\u7684\u5934\u5c3e\u8282\u70b9<\/li>\n<li>\u5168\u90e8\u904d\u5386\u8282\u70b9\u5b8c\u6bd5\u540e\uff0c\u5c06\u8fde\u63a5\u5c0f\u4e8e\u7684\u5c3e-&gt;\u7b49\u4e8e\u7684\u5934-&gt;\u7b49\u4e8e\u7684\u5c3e-&gt;\u5927\u4e8e\u7684\u5934<\/li>\n<\/ol>\n<pre><code class=\"language-java\">public static Node listPartition2(Node head, int pivot) {\n    \/\/ \u5c0f\u4e8epivot\u7684\u94fe\u8868\u5934\u5c3e\u8282\u70b9\n    Node lessSt = null;\n    Node lessEnd = null;\n    \/\/ \u7b49\u4e8epivot\u7684\u94fe\u8868\u5934\u5c3e\u8282\u70b9\n    Node eqSt = null;\n    Node eqEnd = null;\n    \/\/ \u5927\u4e8epivot\u7684\u94fe\u8868\u5934\u5c3e\u8282\u70b9\n    Node moreSt = null;\n    Node moreEnd = null;\n    \/\/ \u7528\u4e8e\u4fdd\u5b58next\u6307\u9488\n    Node next = null;\n    \/\/ \u904d\u5386\u94fe\u8868\n    while(head != null) {\n        next = head.next;\n        \/\/ \u4e3a\u4e86\u4e0d\u6c61\u67d3\u5c0f\u4e8e\uff0c\u7b49\u4e8e\uff0c\u5927\u4e8e\u7684\u6307\u9488next\uff0c\u8fd9\u91cc\u6e05\u7a7a\n        head.next = null;\n        if(head.value &lt; pivot) {\n            if(lessSt == null) {\n                lessSt = head;\n                lessEnd = head;\n            }else {\n                lessEnd.next = head;\n                lessEnd = head;\n            }\n        }else if(head.value == pivot) {\n            if(eqSt == null) {\n                eqSt = head;\n                eqEnd = head;\n            }else {\n                eqEnd.next = head;\n                eqEnd = head;\n            }\n        }else {\n            if(moreSt == null) {\n                moreSt = head;\n                moreEnd = head;\n            }else {\n                moreEnd.next = head;\n                moreEnd = head;\n            }\n        }\n        head = next;\n    }\n    \/\/ \u5c0f\u4e8e\u548c\u7b49\u4e8e\u533a\u57df\u76f8\u8fde\n    if(lessEnd != null) {\n        lessEnd.next = eqSt;\n        \/\/ \u5224\u65adequal\u7684\u7ed3\u5c3e\u6307\u9488\u662f\u5426\u4e3a\u7a7a\n        eqEnd = eqEnd == null ? lessEnd : eqEnd;\n    }\n    \/\/ \u6700\u540e\u7b49\u4e8e\uff0c\u5927\u4e8e\u533a\u57df\u76f8\u8fde\n    if (eqEnd != null) {\n        eqEnd.next = moreSt;\n    }\n    if (lessSt != null) {\n        return lessSt;\n    }\n    if (eqSt != null) {\n        return eqSt;\n    }\n    if (moreSt != null) {\n        return moreSt;\n    }\n    return null;\n}<\/code><\/pre>\n<h4>\u590d\u5236\u542b\u6709\u968f\u5373\u6307\u9488\u8282\u70b9\u7684\u94fe\u8868<\/h4>\n<h5>\u666e\u901a\u89e3\u6cd5<\/h5>\n<p>\u9996\u5148\u4ecb\u7ecd\u666e\u901a\u89e3\u6cd5\uff0c\u666e\u901a\u89e3\u6cd5\u53ef\u4ee5\u505a\u5230\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(N)\uff0c\u989d\u5916\u7a7a\u95f4\u590d\u6742\u5ea6\u4e3aO(N)\uff0c\u9700\u8981\u4f7f\u7528\u5230\u54c8\u5e0c\u8868\uff08HashMap\uff09\u7ed3\u6784\u3002\u5177\u4f53\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n<ol>\n<li>\n<p>\u4ece\u5de6\u5230\u53f3\u904d\u5386\u94fe\u8868\uff0c\u5bf9\u6bcf\u4e2a\u8282\u70b9\u90fd\u590d\u5236\u751f\u6210\u76f8\u5e94\u7684\u526f\u672c\u8282\u70b9\uff0c\u7136\u540e\u5c06\u5bf9\u5e94\u5173\u7cfb\u653e\u5165\u54c8\u5e0c\u8868map \u4e2d\u3002\u4f8b\u5982\uff0c\u94fe\u88681-&gt;2-&gt;3-&gt;null\uff0c\u904d\u53861\u30012\u30013 \u65f6\u4f9d\u6b21\u751f\u62101\u2032\u30012\u2032\u30013\u2032\uff0c\u6700\u540e\u5c06\u5bf9\u5e94\u5173\u7cfb\u653e\u5165map \u4e2d\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155509.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155509.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom:50%;\" \/><\/div><\/p>\n<p>\u6b65\u9aa41 \u5b8c\u6210\u540e\uff0c\u539f\u94fe\u8868\u6ca1\u6709\u4efb\u4f55\u53d8\u5316\uff0c\u6bcf\u4e00\u4e2a\u526f\u672c\u8282\u70b9\u7684next \u548crand \u6307\u9488\u90fd\u6307\u5411null\u3002<\/p>\n<\/li>\n<li>\n<p>\u518d\u4ece\u5de6\u5230\u53f3\u904d\u5386\u94fe\u8868\uff0c\u6b64\u65f6\u5c31\u53ef\u4ee5\u8bbe\u7f6e\u6bcf\u4e00\u4e2a\u526f\u672c\u8282\u70b9\u7684next \u548crand \u6307\u9488\u3002<\/p>\n<p>\u4f8b\u5982\uff1a\u539f\u94fe\u88681-&gt;2-&gt;3-&gt;null\uff0c\u5047\u8bbe1 \u7684rand \u6307\u9488\u6307\u54113\uff0c2 \u7684rand \u6307\u9488\u6307\u5411null\uff0c3 \u7684rand\u6307\u9488\u6307\u54111\u3002\u904d\u5386\u5230\u8282\u70b91 \u65f6\uff0c\u53ef\u4ee5\u4ecemap \u4e2d\u5f97\u5230\u8282\u70b91 \u7684\u526f\u672c\u8282\u70b91\u2032\uff0c\u8282\u70b91 \u7684next \u6307\u5411\u8282\u70b92\uff0c\u6240\u4ee5\u4ecemap \u4e2d\u5f97\u5230\u8282\u70b92 \u7684\u526f\u672c\u8282\u70b92\u2032\uff0c\u7136\u540e\u4ee41\u2032.next=2\u2032\uff0c\u526f\u672c\u8282\u70b91\u2032\u7684next \u6307\u9488\u5c31\u8bbe\u7f6e\u597d\u4e86\u3002\u540c\u65f6\u8282\u70b91 \u7684rand \u6307\u5411\u8282\u70b93\uff0c\u6240\u4ee5\u4ecemap \u4e2d\u5f97\u5230\u8282\u70b93 \u7684\u526f\u672c\u8282\u70b93\u2032\uff0c\u7136\u540e\u4ee41\u2032.rand=3\u2032\uff0c\u526f\u672c\u8282\u70b91\u2032\u7684rand \u6307\u9488\u4e5f\u8bbe\u7f6e\u597d\u4e86\u3002\u4ee5\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u8bbe\u7f6e\u6bcf\u4e00\u4e2a\u526f\u672c\u8282\u70b9\u7684next\u4e0erand \u6307\u9488\u3002<\/p>\n<\/li>\n<li>\n<p>\u5c061\u2032\u8282\u70b9\u4f5c\u4e3a\u7ed3\u679c\u8fd4\u56de\u5373\u53ef\u3002<\/p>\n<\/li>\n<\/ol>\n<p>\u54c8\u5e0c\u8868\u589e\u5220\u6539\u67e5\u7684\u64cd\u4f5c\u65f6\u95f4\u590d\u6742\u5ea6\u90fd\u662fO(1)\uff0c\u666e\u901a\u65b9\u6cd5\u4e00\u5171\u53ea\u904d\u5386\u94fe\u8868\u4e24\u904d\uff0c\u6240\u4ee5\u666e\u901a\u89e3\u6cd5\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(N)\uff0c\u56e0\u4e3a\u4f7f\u7528\u4e86\u54c8\u5e0c\u8868\u6765\u4fdd\u5b58\u539f\u8282\u70b9\u4e0e\u526f\u672c\u8282\u70b9\u7684\u5bf9\u5e94\u5173\u7cfb\uff0c\u6240\u4ee5\u989d\u5916\u7a7a\u95f4\u590d\u6742\u5ea6\u4e3aO(N)\u3002<\/p>\n<h5>\u8fdb\u9636\u89e3\u6cd5<\/h5>\n<p>\u8fdb\u9636\u89e3\u6cd5\u4e0d\u4f7f\u7528\u54c8\u5e0c\u8868\u6765\u4fdd\u5b58\u5bf9\u5e94\u5173\u7cfb\uff0c\u800c\u53ea\u7528\u6709\u9650\u7684\u51e0\u4e2a\u53d8\u91cf\u5b8c\u6210\u6240\u6709\u7684\u529f\u80fd\u3002\u5177\u4f53\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n<ol>\n<li>\n<p>\u4ece\u5de6\u5230\u53f3\u904d\u5386\u94fe\u8868\uff0c\u5bf9\u6bcf\u4e2a\u8282\u70b9cur \u90fd\u590d\u5236\u751f\u6210\u76f8\u5e94\u7684\u526f\u672c\u8282\u70b9copy\uff0c\u7136\u540e\u628acopy \u653e\u5728cur \u548c\u4e0b\u4e00\u4e2a\u8981\u904d\u5386\u8282\u70b9\u7684\u4e2d\u95f4\u3002<\/p>\n<p>\u4f8b\u5982\uff1a\u539f\u94fe\u88681-&gt;2-&gt;3-&gt;null\uff0c\u5728\u6b65\u9aa41 \u4e2d\u5b8c\u6210\u540e\uff0c\u539f\u94fe\u8868\u53d8\u62101-&gt;1\u2032-&gt;2-&gt;2\u2032-&gt;3-&gt;3\u2032-&gt;null\u3002<\/p>\n<\/li>\n<li>\n<p>\u518d\u4ece\u5de6\u5230\u53f3\u904d\u5386\u94fe\u8868\uff0c\u5728\u904d\u5386\u65f6\u8bbe\u7f6e\u6bcf\u4e00\u4e2a\u526f\u672c\u8282\u70b9\u7684rand \u6307\u9488\u3002\u8fd8\u662f\u4e3e\u4f8b\u6765\u8bf4\u660e\u8c03\u6574\u8fc7\u7a0b\u3002<\/p>\n<p>\u4f8b\u5982\uff1a\u6b64\u65f6\u94fe\u8868\u4e3a1-&gt;1\u2032-&gt;2-&gt;2\u2032-&gt;3-&gt;3\u2032-&gt;null\uff0c\u5047\u8bbe1 \u7684rand \u6307\u9488\u6307\u54113\uff0c2 \u7684rand \u6307\u9488\u6307\u5411null\uff0c3 \u7684rand \u6307\u9488\u6307\u54111\u3002\u904d\u5386\u5230\u8282\u70b91 \u65f6\uff0c\u8282\u70b91 \u7684\u4e0b\u4e00\u4e2a\u8282\u70b91.next \u5c31\u662f\u5176\u526f\u672c\u8282\u70b91\u2032\u30021 \u7684rand \u6307\u9488\u6307\u54113\uff0c\u6240\u4ee51\u2032\u7684rand \u6307\u9488\u5e94\u8be5\u6307\u54113\u2032\u3002\u5982\u4f55\u627e\u52303\u2032\u5462\uff1f\u56e0\u4e3a\u6bcf\u4e2a\u8282\u70b9\u7684\u526f\u672c\u8282\u70b9\u90fd\u5728\u81ea\u5df1\u7684\u540e\u4e00\u4e2a\uff0c\u6240\u4ee5\u6b64\u65f6\u901a\u8fc73.next \u5c31\u53ef\u4ee5\u627e\u52303\u2032\uff0c\u4ee41\u2032.next=3\u2032\u5373\u53ef\u3002\u4ee5\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u8bbe\u7f6e\u6bcf\u4e00\u4e2a\u526f\u672c\u8282\u70b9\u7684rand \u6307\u9488\u3002<\/p>\n<\/li>\n<li>\n<p>\u6b65\u9aa42 \u5b8c\u6210\u540e\uff0c\u8282\u70b91\uff0c2\uff0c3\uff0c\u2026\u2026\u4e4b\u95f4\u7684rand \u5173\u7cfb\u6ca1\u6709\u4efb\u4f55\u53d8\u5316\uff0c\u8282\u70b91\u2032\uff0c2\u2032\uff0c3\u2032\u2026\u2026\u4e4b\u95f4\u7684rand \u5173\u7cfb\u4e5f\u88ab\u6b63\u786e\u8bbe\u7f6e\u4e86\uff0c\u6b64\u65f6\u6240\u6709\u7684\u8282\u70b9\u4e0e\u526f\u672c\u8282\u70b9\u4e32\u5728\u4e00\u8d77\uff0c\u5c06\u5176\u5206\u79bb\u51fa\u6765\u5373\u53ef\u3002\u4f8b\u5982\uff1a\u6b64\u65f6\u94fe\u8868\u4e3a1-&gt;1\u2032-&gt;2-&gt;2\u2032-&gt;3-&gt;3\u2032-&gt;null\uff0c\u5206\u79bb\u62101-&gt;2-&gt;3-&gt;null \u548c1\u2032-&gt;2\u2032-&gt;3\u2032-&gt;null \u5373\u53ef\uff0c\u5e76\u4e14\u5728\u8fd9\u4e00\u6b65\u4e2d\uff0c\u6bcf\u4e2a\u8282\u70b9\u7684rand \u6307\u9488\u4e0d\u7528\u505a\u4efb\u4f55\u8c03\u6574\uff0c\u5728\u6b65\u9aa42 \u4e2d\u90fd\u5df2\u7ecf\u8bbe\u7f6e\u597d\u3002<\/p>\n<\/li>\n<li>\n<p>\u5c061\u2032\u8282\u70b9\u4f5c\u4e3a\u7ed3\u679c\u8fd4\u56de\u5373\u53ef\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155515.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155515.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20211011230438504\" style=\"zoom: 33%;\" \/><\/div>\n<\/li>\n<\/ol>\n<pre><code class=\"language-java\">import java.util.HashMap;\npublic class Code_13_CopyListWithRandom {\n    public static class Node {\n        public int value;\n        public Node next;\n        public Node rand;\n\n        public Node(int data) {\n            this.value = data;\n        }\n    }\n    \/\/\u65b9\u6cd5\u4e00\uff1a\u91c7\u7528hashMap\n    public static Node copyListWithRand1(Node head) {\n        HashMap&lt;Node, Node&gt; map = new HashMap&lt;Node, Node&gt;();\n        Node cur = head;\n        while (cur != null) {\n            map.put(cur, new Node(cur.value));\n            cur = cur.next;\n        }\n        cur = head;\n        while (cur != null) {\n            map.get(cur).next = map.get(cur.next);\n            map.get(cur).rand = map.get(cur.rand);\n            cur = cur.next;\n        }\n        return map.get(head);\n    }\n    \/\/\u65b9\u6cd5\u4e8c\uff1ai \u548c i\u2019\u4e00\u7ec4\n    public static Node copyListWithRand2(Node head) {\n        if (head == null) {\n            return null;\n        }\n        Node cur = head;\n        Node next = null;\n        \/\/ copy node and link to every node\n        while (cur != null) {\n            next = cur.next;\n            cur.next = new Node(cur.value);\n            cur.next.next = next;\n            cur = next;\n        }\n        cur = head;\n        Node curCopy = null;\n        \/\/ set copy node rand\n        while (cur != null) {\n            next = cur.next.next;\n            curCopy = cur.next;\n            curCopy.rand = cur.rand != null ? cur.rand.next : null;\n            cur = next;\n        }\n        Node res = head.next;\n        cur = head;\n        \/\/ split\n        while (cur != null) {\n            next = cur.next.next;\n            curCopy = cur.next;\n            cur.next = next;\n            curCopy.next = next != null ? next.next : null;\n            cur = next;\n        }\n        return res;\n    }\n}<\/code><\/pre>\n<h2>5.\u4e8c\u53c9\u6811<\/h2>\n<h3>\u4e8c\u53c9\u6811\u8282\u70b9\u7ed3\u6784<\/h3>\n<pre><code class=\"language-java\">class Node&lt;V&gt;{\n    V value;\n    Node left;\n    Node right;\n}\n<\/code><\/pre>\n<ul>\n<li>\u7528\u9012\u5f52\u548c\u975e\u9012\u5f52\u4e24\u79cd\u65b9\u5f0f\u5b9e\u73b0\u4e8c\u53c9\u6811\u7684\u5148\u5e8f\uff0c\u4e2d\u5e8f\uff0c\u540e\u5e8f\u904d\u5386<\/li>\n<li>\u76f4\u89c2\u6253\u5370\u4e00\u9897\u4e8c\u53c9\u6811<\/li>\n<li>\u5982\u4f55\u5b8c\u6210\u4e8c\u53c9\u6811\u7684\u5bbd\u5ea6\u5bfb\u4f18\u904d\u5386<\/li>\n<\/ul>\n<h3>\u9012\u5f52\u904d\u5386<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155516.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155516.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20211018105858009\" style=\"zoom:33%;\" \/><\/div><\/p>\n<pre><code class=\"language-java\">public static void f(Node head){\n    if(head == null){\n    return;\n    }\n    f(head.left);\n    f(head.right);\n}<\/code><\/pre>\n<h3>\u5148\u5e8f\u3001\u4e2d\u5e8f\u3001\u540e\u5e8f\u904d\u5386<\/h3>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155517.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155517.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20211018110140041\" style=\"zoom: 25%;\" \/><\/div> <\/p>\n<p>\u5148\u5e8f\u904d\u5386\uff1a\u5bf9\u4e8e\u4e8c\u53c9\u6811\u7684\u6bcf\u4e00\u4e2a\u5b50\u6811\u90fd\u662f\uff0c\u5148\u6253\u5e94\u5934\uff0c\u518d\u6253\u5370\u5de6\u5b69\u5b50\uff0c\u518d\u6253\u5370\u53f3\u5b69\u5b50<br \/>\n\u601d\u8def\uff1a\u73b0\u5c06\u5934\u653e\u5165\u4e00\u4e2a\u6808\u4e2d\uff0c\u5f00\u59cb\u904d\u5386\uff0c\u904d\u5386\u5185\u5bb9\uff1a\u6bcf\u6b21\u4ece\u6808\u4e2d\u5f39\u51fa\u6808\u9876\u5143\u7d20\uff0c\u6253\u5370\u6808\u9876\u5143\u7d20\uff0c\u5224\u65ad\u662f\u5426\u6709\u53f3\u5b69\u5b50\uff0c\u5c06\u6808\u9876\u5143\u7d20\u53f3\u5b69\u5b50\u538b\u5165\u6808\u4e2d\uff0c\u5224\u65ad\u662f\u5426\u6709\u5de6\u5b69\u5b50\uff0c\u518d\u5c06\u6808\u9876\u5143\u7d20\u7684\u5de6\u5b69\u5b50\u538b\u8fdb\u6808\u4e2d<\/p>\n<p>\u4e2d\u5e8f\u904d\u5386<\/p>\n<p>\u601d\u8def\uff1a\u5148\u5c06\u5934\u8282\u70b9\u7684\u5de6\u8fb9\u754c\u538b\u5165\u6808\u4e2d\uff0c\u5f00\u59cb\u904d\u5386\uff0c\u904d\u5386\u5185\u5bb9\uff1a\u6bcf\u6b21\u4ece\u6808\u4e2d\u5f39\u51fa\u6808\u9876\u5143\u7d20\uff0c\u6253\u5370\u6808\u9876\u5143\u7d20\uff0c\u5224\u65ad\u662f\u5426\u6709\u53f3\u5b69\u5b50\uff0c\u5c06\u6808\u9876\u5143\u7d20\u53f3\u5b69\u5b50\u538b\u5165\u6808\u4e2d\uff0c\u518d\u5c06\u5de6\u8fb9\u754c\u90fd\u538b\u5165\u6808\u4e2d<\/p>\n<p>\u540e\u5e8f\u904d\u5386<\/p>\n<p>\u601d\u8def\uff1a\u73b0\u5c06\u5934\u653e\u5165\u4e00\u4e2a\u68081\u4e2d\uff0c\u5f00\u59cb\u904d\u5386\uff0c\u904d\u5386\u5185\u5bb9\uff1a\u6bcf\u6b21\u4ece\u68081\u4e2d\u5f39\u51fa\u6808\u9876\u5143\u7d20\uff0c\u5c06\u5143\u7d20\u653e\u5165\u68082\u4e2d\uff08\u53ea\u6709\u8fd9\u91cc\u548c\u524d\u5e8f\u904d\u5386\u4e0d\u540c\uff09\uff0c\u5224\u65ad\u662f\u5426\u6709\u53f3\u5b69\u5b50\uff0c\u5c06\u68081\u9876\u5143\u7d20\u53f3\u5b69\u5b50\u538b\u5165\u68081\u4e2d\uff0c\u5224\u65ad\u662f\u5426\u6709\u5de6\u5b69\u5b50\uff0c\u518d\u5c06\u68081\u9876\u5143\u7d20\u7684\u5de6\u5b69\u5b50\u538b\u8fdb\u68081\u4e2d\u6700\u540e\u5c06\u68082\u7684\u5143\u7d20\u4e00\u6b21pop\u51fa\u6765\u6253\u5370<\/p>\n<pre><code class=\"language-java\">public static class Node {\n    public int value;\n    public Node left;\n    public Node right;\n\n    public Node(int data) {\n        this.value = data;\n    }\n}\npublic static void preOrderRecur(Node head) { \/\/\u5148\u5e8f\n    if (head == null) {\n        return;\n    }\n    System.out.print(head.value + &quot; &quot;);  \/\/\u552f\u4e00\u7684\u4e0d\u540c\u5c31\u662f\u6253\u5370\u8fc7\u7a0b\u7684\u4f4d\u7f6e\n    preOrderRecur(head.left);\n    preOrderRecur(head.right);\n}\npublic static void inOrderRecur(Node head) {  \/\/\u4e2d\u5e8f\n    if (head == null) {\n        return;\n    }\n    inOrderRecur(head.left);\n    System.out.print(head.value + &quot; &quot;);\n    inOrderRecur(head.right);\n}\npublic static void posOrderRecur(Node head) {  \/\/\u540e\u5e8f\n    if (head == null) {\n        return;\n    }\n    posOrderRecur(head.left);\n    posOrderRecur(head.right);\n    System.out.print(head.value + &quot; &quot;);\n}<\/code><\/pre>\n<h3>\u76f4\u89c2\u6253\u5370\u4e00\u9897\u4e8c\u53c9\u6811<\/h3>\n<pre><code class=\"language-java\">package com.gxu.dawnlab_algorithm4;\npublic class PrintBinaryTree {\n    public static class Node{\n        public int data;\n        public Node left;\n        public Node right;\n\n        public Node(int data){\n            this.data = data;\n        }\n    }\n\n    public static void printTree(Node head){\n        System.out.println(&quot;Binary Tree:&quot;);\n        printInOrder(head, 0, &quot;H&quot;, 17);\n        System.out.println();\n    }\n\n    public static void printInOrder(Node head,int height,String to,int len){    \/\/height\u662f\u6811\u9ad8\uff0c\u4ece0\u5c42\u5f00\u59cb\n        if(head == null){\n            return;\n        }\n        printInOrder(head.right,height+1,&quot;v&quot;,len);\n        String val = to + head.data + to;\n        int lenM = val.length();\n        int lenL = (len - lenM) \/ 2;\n        int lenR = len - lenM - lenL;\n        val = getSpace(lenL) + val + getSpace(lenR);\n        System.out.println(getSpace(height * len) + val);   \/\/height * len\u7a7a\u683c\u662f\u4e3a\u4e86\u663e\u793a\u4e0d\u540c\u5c42\u6548\u679c\n        printInOrder(head.left,height+1,&quot;^&quot;,len);\n\n    }\n\n    public static String getSpace(int num){\n        String space = &quot; &quot;;\n        StringBuffer buf = new StringBuffer();\n        for (int i = 0; i &lt; num; i++) {\n            buf.append(space);\n        }\n        return buf.toString();\n    }\n\n    public static void main(String[] args) {\n        Node head = new Node(1);\n        head = new Node(1);\n        head.left = new Node(2);\n        head.right = new Node(3);\n        head.left.left = new Node(4);\n        head.right.left = new Node(5);\n        head.right.right = new Node(6);\n        head.left.left.right = new Node(7);\n        printTree(head);\n\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">public static void printTree(Node head) {\n        System.out.println(&quot;Binary Tree:&quot;);\n        printInOrder(head, 0, &quot;H&quot;, 17);\n        System.out.println();\n    }\n\n    public static void printInOrder(Node head, int height, String to, int len) {\n        if (head == null) {\n            return;\n        }\n        printInOrder(head.right, height + 1, &quot;v&quot;, len);\n        String val = to + head.value + to;\n        int lenM = val.length();\n        int lenL = (len - lenM) \/ 2;\n        int lenR = len - lenM - lenL;\n        val = getSpace(lenL) + val + getSpace(lenR);\n        System.out.println(getSpace(height * len) + val);\n        printInOrder(head.left, height + 1, &quot;^&quot;, len);\n    }\n\n    public static String getSpace(int num) {\n        String space = &quot; &quot;;\n        StringBuffer buf = new StringBuffer(&quot;&quot;);\n        for (int i = 0; i &lt; num; i++) {\n            buf.append(space);\n        }\n        return buf.toString();\n    }<\/code><\/pre>\n<h3>\u4e8c\u53c9\u6811\u7684\u5bbd\u5ea6\u4f18\u5148\u904d\u5386<\/h3>\n<h4>\u65b9\u6cd5\u4e00\uff1ahash\u8868+\u961f\u5217<\/h4>\n<pre><code class=\"language-java\">public static void w(Node head){\n    if(head == null){\n        return;\n    }\n    Queue&lt;Node&gt; queue = new LinkedList&lt;&gt;();\n    queue.add(head);\n    HashMap&lt;Node, Integer&gt; levelMap = new HashMap&lt;&gt;();\n    levelMap.put(head, 1);\n    int curLevel = 1;\n    int curLevelNodes = 0;\n    int max = Integer.MIN_VALUE;\n    while(!queue.isEmpty()){\n        Node cur = queue.poll();\n        int curNodeLevel = levelMap.get(cur);\n        if(curNodeLevel == curLevel){\n            curLevelNodes++;\n        }else{\n            max = Math.max(max, curLevelNodes);\n            curLevel++;\n            curLevelNodes = 1;\n        }\n        if(cur.left != null){\n            levelMap.put(cur.left,curNodeLevel + 1);\n            queue.add(cur.left);\n        }\n        if(cur.right != null){\n            levelMap.put(cur.right, curNodeLevel + 1);\n            queue.add(cur.right);\n        }\n    }\n    return max;\n}<\/code><\/pre>\n<h4>\u65b9\u6cd5\u4e8c\uff1a\u961f\u5217<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155518.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155518.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20211018115733575\" style=\"zoom: 25%;\" \/><\/div> <\/p>\n<h3>\u4e8c\u53c9\u6811\u7684\u76f8\u5173\u6982\u5ff5\u53ca\u5176\u5b9e\u73b0\u5224\u65ad<\/h3>\n<ul>\n<li>\u5982\u4f55\u5224\u65ad\u4e8c\u53c9\u6811\u662f\u5426\u662f\u641c\u7d22\u4e8c\u53c9\u6811<\/li>\n<li>\u5982\u4f55\u5224\u65ad\u4e8c\u53c9\u6811\u662f\u5426\u662f\u5b8c\u5168\u4e8c\u53c9\u6811<\/li>\n<li>\u5982\u548c\u5224\u65ad\u4e8c\u53c9\u6811\u662f\u5426\u662f\u6ee1\u4e8c\u53c9\u6811<\/li>\n<li>\u5982\u4f55\u5224\u65ad\u4e8c\u53c9\u6811\u662f\u5426\u662f\u5e73\u8861\u4e8c\u53c9\u6811<\/li>\n<\/ul>\n<h4>\u641c\u7d22\u4e8c\u53c9\u6811\u7684\u5224\u65ad<\/h4>\n<p>\u641c\u7d22\u4e8c\u53c9\u6811\u5de6\u53f3\u8282\u70b9\u90fd\u6bd4\u6839\u8282\u70b9\u5927<\/p>\n<pre><code class=\"language-java\">\/\/\u601d\u8def\uff1a\u4e2d\u5e8f\u904d\u5386\uff0c\u4ece\u5c0f\u5230\u5927\u5c31\u662f\npackage class07;\npublic class Code05_IsBinarySearchTree {\n    public static class TreeNode {\n        public int val;\n        public TreeNode left;\n        public TreeNode right;\n        TreeNode(int val) {\n            this.val = val;\n        }\n    }\n    public static class Info {\n        public boolean isBST;\n        public int max;\n        public int min;\n        public Info(boolean is, int ma, int mi) {\n            isBST = is;\n            max = ma;\n            min = mi;\n        }\n    }\n\/\/  public static Info process(TreeNode x) {\n\/\/      if (x == null) {\n\/\/          return null;\n\/\/      }\n\/\/      Info leftInfo = process(x.left);\n\/\/      Info rightInfo = process(x.right);\n\/\/      int max = x.val;\n\/\/      int min = x.val;\n\/\/      if (leftInfo != null) {\n\/\/          max = Math.max(leftInfo.max, max);\n\/\/          min = Math.min(leftInfo.min, min);\n\/\/      }\n\/\/      if (rightInfo != null) {\n\/\/          max = Math.max(rightInfo.max, max);\n\/\/          min = Math.min(rightInfo.min, min);\n\/\/      }\n\/\/      boolean isBST = true;\n\/\/      if (leftInfo != null &amp;&amp; !leftInfo.isBST) {\n\/\/          isBST = false;\n\/\/      }\n\/\/      if (rightInfo != null &amp;&amp; !rightInfo.isBST) {\n\/\/          isBST = false;\n\/\/      }\n\/\/      boolean leftMaxLessX = leftInfo == null ? true : (leftInfo.max &lt; x.val);\n\/\/      boolean rightMinMoreX = rightInfo == null ? true : (rightInfo.min &gt; x.val);\n\/\/      if (!(leftMaxLessX &amp;&amp; rightMinMoreX)) {\n\/\/          isBST = false;\n\/\/      }\n\/\/      return new Info(isBST, max, min);\n\/\/  }\n    public static Info process(TreeNode x) {\n        if (x == null) {\n            return null;\n        }\n        Info leftInfo = process(x.left);\n        Info rightInfo = process(x.right);\n        int max = x.val;\n        int min = x.val;\n        if (leftInfo != null) {\n            max = Math.max(leftInfo.max, max);\n            min = Math.min(leftInfo.min, min);\n        }\n        if (rightInfo != null) {\n            max = Math.max(rightInfo.max, max);\n            min = Math.min(rightInfo.min, min);\n        }\n        boolean isBST = false;\n        boolean leftIsBst = leftInfo == null ? true : leftInfo.isBST;\n        boolean rightIsBst = rightInfo == null ? true : rightInfo.isBST;\n        boolean leftMaxLessX = leftInfo == null ? true : (leftInfo.max &lt; x.val);\n        boolean rightMinMoreX = rightInfo == null ? true : (rightInfo.min &gt; x.val);\n        if (leftIsBst &amp;&amp; rightIsBst &amp;&amp; leftMaxLessX &amp;&amp; rightMinMoreX) {\n            isBST = true;\n        }\n        return new Info(isBST, max, min);\n    }\n\n}<\/code><\/pre>\n<h4>\u5b8c\u5168\u4e8c\u53c9\u6811\u7684\u5224\u65ad<\/h4>\n<p>\u6709\u4ee5\u4e0b\u51e0\u79cd\u60c5\u51b5<\/p>\n<ol>\n<li>\u82e5\u4e00\u4e2a\u8282\u70b9\u6709\u53f3\u5b69\u5b50\u65e0\u5de6\u5b69\u5b50\uff0c\u90a3\u4e48\u4e00\u5b9a\u4e0d\u662f\u5b8c\u5168\u4e8c\u53c9\u6811\u3002<\/li>\n<li>\u82e5\u4e00\u4e2a\u8282\u70b9\u53ea\u6709\u5de6\u5b69\u5b50\uff0c\u65e0\u53f3\u5b69\u5b50\u6216\u8005\u65e0\u5b69\u5b50\uff0c\u90a3\u4e48\u540e\u9762\u9047\u5230\u7684\u5fc5\u987b\u662f\u53f6\u5b50\u8282\u70b9\u3002\u5426\u5219\u4e0d\u662f\u5b8c\u5168\u4e8c\u53c9\u6811\u3002<\/li>\n<\/ol>\n<pre><code class=\"language-java\">package class12;\n\nimport java.util.LinkedList;\n\npublic class Code01_IsCBT {\n\n    public static class Node {\n        public int value;\n        public Node left;\n        public Node right;\n\n        public Node(int data) {\n            this.value = data;\n        }\n    }\n\n    public static boolean isCBT1(Node head) {\n        if (head == null) {\n            return true;\n        }\n        LinkedList&lt;Node&gt; queue = new LinkedList&lt;&gt;();\n        \/\/ \u662f\u5426\u9047\u5230\u8fc7\u5de6\u53f3\u4e24\u4e2a\u5b69\u5b50\u4e0d\u53cc\u5168\u7684\u8282\u70b9\n        boolean leaf = false;\n        Node l = null;\n        Node r = null;\n        queue.add(head);\n        while (!queue.isEmpty()) {\n            head = queue.poll();\n            l = head.left;\n            r = head.right;\n            if (\n                \/\/ \u5982\u679c\u9047\u5230\u4e86\u4e0d\u53cc\u5168\u7684\u8282\u70b9\u4e4b\u540e\uff0c\u53c8\u53d1\u73b0\u5f53\u524d\u8282\u70b9\u4e0d\u662f\u53f6\u8282\u70b9\n                (leaf &amp;&amp; (l != null || r != null)) \n                || \n                (l == null &amp;&amp; r != null)\n\n            ) {\n                return false;\n            }\n            if (l != null) {\n                queue.add(l);\n            }\n            if (r != null) {\n                queue.add(r);\n            }\n            if (l == null || r == null) {\n                leaf = true;\n            }\n        }\n        return true;\n    }\n\n    public static boolean isCBT2(Node head) {\n        if (head == null) {\n            return true;\n        }\n        return process(head).isCBT;\n    }\n\n    \/\/ \u5bf9\u6bcf\u4e00\u68f5\u5b50\u6811\uff0c\u662f\u5426\u662f\u6ee1\u4e8c\u53c9\u6811\u3001\u662f\u5426\u662f\u5b8c\u5168\u4e8c\u53c9\u6811\u3001\u9ad8\u5ea6\n    public static class Info {\n        public boolean isFull;\n        public boolean isCBT;\n        public int height;\n\n        public Info(boolean full, boolean cbt, int h) {\n            isFull = full;\n            isCBT = cbt;\n            height = h;\n        }\n    }\n\n    public static Info process(Node X) {\n        if (X == null) {\n            return new Info(true, true, 0);\n        }\n        Info leftInfo = process(X.left);\n        Info rightInfo = process(X.right);\n\n        int height = Math.max(leftInfo.height, rightInfo.height) + 1;\n\n        boolean isFull = leftInfo.isFull \n            &amp;&amp; \n            rightInfo.isFull \n            &amp;&amp; leftInfo.height == rightInfo.height;\n\n        boolean isCBT = false;\n        if (isFull) {\n            isCBT = true;\n        } else { \/\/ \u4ee5x\u4e3a\u5934\u6574\u68f5\u6811\uff0c\u4e0d\u6ee1\n            if (leftInfo.isCBT &amp;&amp; rightInfo.isCBT) {\n\n                if (leftInfo.isCBT \n                    &amp;&amp; rightInfo.isFull \n                    &amp;&amp; leftInfo.height == rightInfo.height + 1) {\n                    isCBT = true;\n                }\n                if (leftInfo.isFull \n                    &amp;&amp; \n                    rightInfo.isFull \n                    &amp;&amp; leftInfo.height == rightInfo.height + 1) {\n                    isCBT = true;\n                }\n                if (leftInfo.isFull \n                    &amp;&amp; rightInfo.isCBT &amp;&amp; leftInfo.height == rightInfo.height) {\n                    isCBT = true;\n                }\n\n            }\n        }\n        return new Info(isFull, isCBT, height);\n    }\n<\/code><\/pre>\n<h4>\u6ee1\u4e8c\u53c9\u6811\u7684\u5224\u65ad<\/h4>\n<p>\u601d\u8def\uff1a\u5148\u6c42\u6700\u5927\u6df1\u5ea6L\uff0c\u518d\u6c42\u6700\u5927\u8282\u70b9\u6570N\uff0c\u6ee1\u8db3$N\\ =\\ 2^L-1$\u5c31\u662f\u6ee1\u4e8c\u53c9\u6811\u3002<\/p>\n<pre><code class=\"language-java\">package class12;\n\npublic class Code04_IsFull {\n\n    public static class Node {\n        public int value;\n        public Node left;\n        public Node right;\n\n        public Node(int data) {\n            this.value = data;\n        }\n    }\n\n    public static boolean isFull1(Node head) {\n        if (head == null) {\n            return true;\n        }\n        int height = h(head);\n        int nodes = n(head);\n        return (1 &lt;&lt; height) - 1 == nodes;\n    }\n\n    public static int h(Node head) {\n        if (head == null) {\n            return 0;\n        }\n        return Math.max(h(head.left), h(head.right)) + 1;\n    }\n\n    public static int n(Node head) {\n        if (head == null) {\n            return 0;\n        }\n        return n(head.left) + n(head.right) + 1;\n    }\n\n    public static boolean isFull2(Node head) {\n        if (head == null) {\n            return true;\n        }\n        Info all = process(head);\n        return (1 &lt;&lt; all.height) - 1 == all.nodes;\n    }\n\n    public static class Info {\n        public int height;\n        public int nodes;\n\n        public Info(int h, int n) {\n            height = h;\n            nodes = n;\n        }\n    }\n\n    public static Info process(Node head) {\n        if (head == null) {\n            return new Info(0, 0);\n        }\n        Info leftInfo = process(head.left);\n        Info rightInfo = process(head.right);\n        int height = Math.max(leftInfo.height, rightInfo.height) + 1;\n        int nodes = leftInfo.nodes + rightInfo.nodes + 1;\n        return new Info(height, nodes);\n    }\n<\/code><\/pre>\n<h4>\u5e73\u8861\u4e8c\u53c9\u6811\u7684\u5224\u65ad<\/h4>\n<p>\u4e00\u4e2a\u4e8c\u53c9\u6811\u7684\u6bcf\u4e00\u4e2a\u8282\u70b9\u7684\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\u7684\u9ad8\u5ea6\u5dee\u4e0d\u8d85\u8fc71<\/p>\n<p>\u601d\u8def\uff1a\u5173\u4e8e\u5e73\u8861\u4e8c\u53c9\u6811\uff0c\u6211\u4eec\u53ea\u9700\u8981\u8003\u8651\u5b83\u7684\u6761\u4ef6\u5c31\u597d\u4e86\uff0c\u5176\u4ed6\u7684\u4ea4\u7ed9\u6a21\u677f\u3002\u4e3b\u8981\u6709\u4e09\u4e2a\u6761\u4ef6<\/p>\n<ol>\n<li>\u5f53\u524d\u8282\u70b9\u7684\u5de6\u5b50\u6811\u662f\u5e73\u8861\u4e8c\u53c9\u6811<\/li>\n<li>\u5f53\u524d\u8282\u70b9\u7684\u53f3\u5b50\u6811\u662f\u5e73\u8861\u4e8c\u53c9\u6811<\/li>\n<li>\u5de6\u5b50\u6811\u4e0e\u53f3\u5b50\u6811\u7684\u9ad8\u5ea6\u5dee\u4e0d\u8d85\u8fc71<\/li>\n<\/ol>\n<pre><code class=\"language-java\">package class12;\n\npublic class Code03_IsBalanced {\n\n    public static class Node {\n        public int value;\n        public Node left;\n        public Node right;\n\n        public Node(int data) {\n            this.value = data;\n        }\n    }\n\n    public static boolean isBalanced1(Node head) {\n        boolean[] ans = new boolean[1];\n        ans[0] = true;\n        process1(head, ans);\n        return ans[0];\n    }\n\n    public static int process1(Node head, boolean[] ans) {\n        if (!ans[0] || head == null) {\n            return -1;\n        }\n        int leftHeight = process1(head.left, ans);\n        int rightHeight = process1(head.right, ans);\n        if (Math.abs(leftHeight - rightHeight) &gt; 1) {\n            ans[0] = false;\n        }\n        return Math.max(leftHeight, rightHeight) + 1;\n    }\n\n    public static boolean isBalanced2(Node head) {\n        return process(head).isBalanced;\n    }\n\n    public static class Info{\n        public boolean isBalanced;\n        public int height;\n\n        public Info(boolean i, int h) {\n            isBalanced = i;\n            height = h;\n        }\n    }\n\n    public static Info process(Node x) {\n        if(x == null) {\n            return new Info(true, 0);\n        }\n        Info leftInfo = process(x.left);\n        Info rightInfo = process(x.right);\n        int height = Math.max(leftInfo.height, rightInfo.height)  + 1;\n        boolean isBalanced = true;\n        if(!leftInfo.isBalanced) {\n            isBalanced = false;\n        }\n        if(!rightInfo.isBalanced) {\n            isBalanced = false;\n        }\n        if(Math.abs(leftInfo.height - rightInfo.height) &gt; 1) {\n            isBalanced = false;\n        }\n        return new Info(isBalanced, height);\n    }<\/code><\/pre>\n<h4>\u6811\u5f62DP\u5957\u8def<\/h4>\n<p>\u6811\u5f62DP\u7b2c\u4e00\u6b65<br \/>\n\u5206\u6790\u9898\u76ee\u8981\u6c42\uff0c\u9009\u53d6\u4efb\u610f\u4e00\u4e2a\u666e\u901a\u8282\u70b9\uff0c\u770b\u770b\u5224\u65ad\u9898\u76ee\u8981\u6c42\u9700\u8981\u5176\u5de6\u53f3\u5b69\u5b50\u63d0\u4f9b\u54ea\u4e9b\u6761\u4ef6\uff1f<br \/>\n\u6bd4\u5982\u8fd9\u9053\u9898\uff0c\u6839\u636e\u641c\u7d22\u4e8c\u53c9\u6811\u7684\u5b9a\u4e49\uff0c\u4efb\u610f\u4e00\u4e2a\u8282\u70b9\uff0c\u9700\u8981\u5927\u4e8e\u5de6\u5b69\u5b50\u7684\u6700\u5927\u503c\uff0c\u540c\u65f6\u5c0f\u4e8e\u53f3\u5b69\u5b50\u7684\u6700\u5c0f\u503c\uff0c\u8fd9\u6837\u624d\u7b97\u662f\u6ee1\u8db3\u5b9a\u4e49\uff0c\u540c\u65f6\uff0c\u5de6\u53f3\u5b69\u5b50\u672c\u8eab\u8fd8\u9700\u8981\u662f\u641c\u7d20\u4e8c\u53c9\u6811\uff0c\u56e0\u6b64\uff0c\u6839\u636e\u9898\u76ee\u8981\u6c42\uff0c\u603b\u7ed3\u51fa\uff0c\u8fd9\u9898\u9700\u8981\u5de6\u53f3\u5b69\u5b50\u63d0\u4f9b\u7684\u4e09\u4e2a\u6570\u636e\uff1a<br \/>\n1.\u662f\u5426\u662f\u641c\u7d22\u4e8c\u53c9\u6811<br \/>\n2.\u6700\u5c0f\u503c<br \/>\n3.\u6700\u5927\u503c<br \/>\n\u5c06\u4e0a\u8ff0\u5de6\u53f3\u5b69\u5b50\u9700\u8981\u7684\u8fd4\u56de\u7ed3\u679c\uff0c\u5c01\u88c5\u6210\u4e00\u4e2a\u6570\u636e\u7ed3\u6784\u4fdd\u5b58\uff0c\u4e5f\u53ef\u4ee5\u4e0d\u5c01\u88c5\uff0c\u5728\u9012\u5f52\u65b9\u6cd5\u4e2d\u8fd4\u56de\u4e5f\u884c\u3002<\/p>\n<p>\u6811\u5f62DP\u7b2c\u4e8c\u6b65<br \/>\n\u5199\u9012\u5f52\u51fd\u6570\uff0c\u6b64\u65f6\uff0c\u9012\u5f52\u51fd\u6570\u53ea\u9700\u8981\u8003\u8651\u4e09\u4ef6\u4e8b\uff1a<br \/>\n\u7b2c\u4e00\uff0c\u5224\u65ad\u4e00\u4e0b\u9012\u5f52\u7ed3\u675f\u7684\u4f4d\u7f6e\uff0c\u5199\u51fa\u9012\u5f52\u51fa\u53e3\u3002<\/p>\n<pre><code class=\"language-java\">if(node==null){\n    return null;\n}<\/code><\/pre>\n<p>\u7b2c\u4e8c\uff0c\u5c06\u4e0a\u8ff0\u5de6\u53f3\u5b69\u5b50\u7684\u8fd4\u56de\u65b9\u6cd5\u5f53\u4f5c\u9ed1\u76d2\u6765\u770b\uff0c\u8fd4\u56de\u7684\u7ed3\u679c\u76f4\u63a5\u4f7f\u7528\u5c31\u884c\u4e86\u3002<\/p>\n<pre><code class=\"language-java\">ReturnData leftData= BST(node.left);\nReturnData rightData= BST(node.right);<\/code><\/pre>\n<p>\u7b2c\u4e09\uff0c\u5229\u7528\u5de6\u53f3\u5b69\u5b50\u8fd4\u56de\u7ed3\u679c\uff0c\u5b9e\u73b0\u81ea\u5df1\u7684\u903b\u8f91\uff0c\u5e76\u7ee7\u7eed\u5411\u4e0a\u8fd4\u56de\u3002<\/p>\n<pre><code class=\"language-java\">int min=node.value;\nint max=node.value;\nboolean isBst;\n\/\/\u5224\u65ad\u662f\u5426\u5408\u683c\nif((leftData==null||(leftData.isBST&amp;&amp;leftData.max&lt;node.value))\n   &amp;&amp;(rightData==null||(rightData.isBST&amp;&amp;rightData.min&gt;node.value))){\n    isBst=true;\n}else {\n    return new ReturnData(false,min,max);\n}\n\/\/\u6c42\u6700\u5c0f\u503c\nif(leftData!=null){\n    min=Math.min(leftData.min,node.value);\n}\n\/\/\u6c42\u6700\u5927\u503c\nif(rightData!=null){\n    max=Math.max(rightData.max,node.value);\n}\nreturn new ReturnData(isBst,min,max);<\/code><\/pre>\n<pre><code class=\"language-java\">\/\/\u5b8c\u6574\u5b9e\u4f8b\u4ee3\u7801\uff1a\npublic static ReturnData  BST(Node  node){\n    if(node==null){\n        return null;\n    }\n    ReturnData leftData= BST(node.left);\n    ReturnData rightData= BST(node.right);\n    int min=node.value;\n    int max=node.value;\n    boolean isBst;\n    if((leftData==null||(leftData.isBST&amp;&amp;leftData.max&lt;node.value))\n       &amp;&amp;(rightData==null||(rightData.isBST&amp;&amp;rightData.min&gt;node.value))){\n        isBst=true;\n    }else {\n        return new ReturnData(false,min,max);\n    }\n    if(leftData!=null){\n        min=Math.min(leftData.min,node.value);\n    }\n    if(rightData!=null){\n        max=Math.max(rightData.max,node.value);\n    }\n    return new ReturnData(isBst,min,max);\n}<\/code><\/pre>\n<h4>\u7ed9\u5b9a\u4e24\u4e2a\u4e8c\u53c9\u6811\u7684\u8282\u70b9node1\u548cnode2\uff0c\u6c42\u5b83\u4eec\u7684\u6700\u4f4e\u516c\u5171\u7956\u5148<\/h4>\n<p>\u5c06\u6240\u6709\u7236\u8282\u70b9\u56de\u6eaf\u673a\u5236\u641e\u597d\uff0c\u5728\u5c0601\u7684\u7236\u8282\u70b9\u653e\u5728\u4e00\u4e2a\u94fe\u91cc\uff0c\u8ba902\u5411\u4e0a\u56de\u6eaf\uff0c\u770b\u770b\u662f\u5426\u572801\u94fe\u91cc<\/p>\n<pre><code class=\"language-java\">\/\/o1,o2\u4e00\u5b9a\u5c5e\u4e8ehead\u4e3a\u5934\u7684\u6570\npublic static Node lca(Node head,Node 01,Node 02){\n    HashMap&lt;Node, Node&gt; fatherMap = newHash&lt;&gt;();\n    fatherMap.put(head, head);\n    process(head, fatherMap);\n    HashSet&lt;Node&gt; Set1 = new HashSet&lt;&gt;();\n    set1.add(01);\n    Node cur = 01;\n    while(cur != fatherMap.get(cur));{\n        set1.add(cur);\n        cur = fatherMap.get(cur);\n    }\n    set1.add(head);\n    while 02 set1\/\/\u4e0d\u5b8c\u6574\u4ee3\u7801\n}\n\npublic satatic void process(Node head,HashMap&lt;Node, Node&gt; fatherMap){\n    if(head == null){\n        return null;\n    }\n    fatherMap.put(head.left head);\n    fatherMap.put(head.right,head);\n    process(head.left, fatherMap);\n    process(head.right, fatherMap);\n}\n}<\/code><\/pre>\n<p>\u6781\u7b80\u4ee3\u7801<\/p>\n<pre><code class=\"language-java\">public static Node lowestAncestor(Node head, Node o1 , Node o2){\n    if (head == null || head == o1 || head == o2){\/\/base case\n    return head;\n    }\n    Node left = lowestAncestor(head.left, o1, o2);\n    Node right = lowestAncestor(head.right, o1, o2);\n    if (left != null &amp;&amp; right != null){\n        return head;\n    }\n    \/\/\u5de6\u53f3\u4e24\u4e2a\u5e76\u975e\u90fd\u6709\u8fd4\u56de\u503c\uff0c\u6709\u54ea\u4e2a\u8fd4\u56de\u54ea\u4e2a\u3002\n    \/\/o1\u662fo2\u7684LAC\u6216o2\u662fo1\u7684LAC\u2014\u2014&gt;\n    \/\/o1,o2\u4e0d\u4e92\u4e3aLAC\u2014\u2014&gt;\n    return left != null ? left : right;\n}<\/code><\/pre>\n<h4>\u6c42\u4e00\u4e2a\u8282\u70b9\u7684\u540e\u7ee7\u8282\u70b9<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155519.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155519.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/div><\/p>\n<p>\u8fd9\u91cc\u6709\u4e24\u79cd\u60c5\u51b5<br \/>\n\u7b2c\u4e00\u79cd\uff0c\u8be5\u8282\u70b9node\u6709\u53f3\u5b50\u8282\u70b9\uff0c\u90a3\u8fd9\u65f6\u4ed6\u7684\u540e\u7ee7\u8282\u70b9\u5c31\u662f\u4ed6\u53f3\u5b50\u8282\u70b9\u7684\u6700\u5de6\u8282\u70b9node0<br \/>\n\u7b2c\u4e8c\u79cd\uff0c\u8be5\u8282\u70b9node\u6ca1\u6709\u53f3\u5b50\u8282\u70b9\uff0c\u90a3\u8fd9\u65f6\u4ed6\u7684\u540e\u7ee7\u8282\u70b9\u5c31\u662f\u4ed6\u7684\u4e0a\u9762\u7684\u4e00\u4e2a\u8282\u70b9node0\uff0c\u4f46node\u5fc5\u987b\u662fnode0\u8282\u70b9\u7684\u5de6\u5b50\u6811\u70b9\u4e0b\u7684\u8282\u70b9\u3002\u5982\u679c\u6ca1\u6709\u8fd9\u4e2a\u8282\u70b9node0\uff0c\u90a3\u4e48\u8282\u70b9node\u5c31\u662f\u8fd9\u68f5\u6811\u7684\u6700\u53f3\u8282\u70b9\uff0c\u8fd9\u4e2a\u8282\u70b9\u7684\u540e\u7ee7\u8282\u70b9\u5c31\u662fNULL\u3002<\/p>\n<pre><code class=\"language-java\">public static class Node {\n        public int value;\n        public Node left;\n        public Node right;\n        public Node parent;\n\n        public Node(int data) {\n            this.value = data;\n        }\n    }\n\n    public Node findLastNode(Node head){\n        if (head == null) {\n            return null;\n        }\n        \/\/\u67e5\u627e\u5f53\u524d\u8282\u70b9\u6709\u6ca1\u6709\u6709\u5b50\u6811 \u5982\u679c\u6709 \u53f3\u5b50\u6811\u7684\u6700\u5de6\u8282\u70b9\u5c31\u662f\u540e\u7ee7\u8282\u70b9\u3002\n        if (head.right!=null){\n            return findLeftNode(head.right);\n        }else{\n            \/\/\u5f53\u524d\u8282\u70b9\u6ca1\u6709\u53f3\u5b50\u6811  \u5411\u4e0a\u67e5\u627e\u5f53\u524d\u8282\u70b9\u5982\u679c\u7236\u8282\u70b9\u7684\u5de6\u5b50\u8282\u70b9\u7b49\u4e8e\u5b83 \u90a3\u4e48\u4ed6\u5c31\u662f\u540e\u7ee7\u8282\u70b9\n            Node parent = head.parent;\n            while (parent!=null &amp;&amp; parent.left!=head){\n                head = parent;\n                parent = head.parent;\n            }\n            return parent;\n        }\n    }\n\n    public Node findLeftNode(Node node){\n        if (node!=null){\n            while (node!=null){\n                node = node.left;\n            }\n            return node;\n        }\n        return null;\n    }\n<\/code><\/pre>\n<h4>\u4e8c\u53c9\u6811\u7684\u5e8f\u5217\u5316\u4e0e\u53cd\u5e8f\u5217\u5316<\/h4>\n<p>\u9898\u76ee<br \/>\n\u4e8c\u53c9\u6811\u88ab\u8bb0\u5f55\u6210\u6587\u4ef6\u7684\u8fc7\u7a0b\u53eb\u4f5c\u4e8c\u53c9\u6811\u7684\u5e8f\u5217\u5316\uff0c\u901a\u8fc7\u6587\u4ef6\u5185\u5bb9\u91cd\u5efa\u539f\u6765\u4e8c\u53c9\u6811\u7684\u8fc7\u7a0b\u53eb\u4f5c\u4e8c\u53c9\u6811\u7684\u53cd\u5e8f\u5217\u5316\u3002\u7ed9\u5b9a\u4e00\u68f5\u4e8c\u53c9\u6811\u7684\u5934\u8282\u70b9head\uff0c\u5df2\u77e5\u4e8c\u53c9\u6811\u8282\u70b9\u503c\u7684\u7c7b\u578b\u4e3a32 \u4f4d\u6574\u578b\u3002\u8bf7\u8bbe\u8ba1\u4e00\u79cd\u4e8c\u53c9\u6811\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u7684\u65b9\u6848\uff0c\u5e76\u7528\u4ee3\u7801\u5b9e\u73b0\u3002<\/p>\n<p>\u9898\u89e3<br \/>\n\u672c\u6587\u63d0\u4f9b\u4e24\u5957\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u7684\u5b9e\u73b0\uff0c\u4f9b\u8bfb\u8005\u53c2\u8003\u3002<\/p>\n<p>\u65b9\u6cd5\u4e00\uff1a\u901a\u8fc7\u5148\u5e8f\u904d\u5386\u5b9e\u73b0\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u3002<br \/>\n\u5148\u4ecb\u7ecd\u5148\u5e8f\u904d\u5386\u4e0b\u7684\u5e8f\u5217\u5316\u8fc7\u7a0b\uff0c\u9996\u5148\u5047\u8bbe\u5e8f\u5217\u5316\u7684\u7ed3\u679c\u5b57\u7b26\u4e32\u4e3astr\uff0c\u521d\u59cb\u65f6str=&quot;&quot;\u3002\u5148\u5e8f\u904d\u5386\u4e8c\u53c9\u6811\uff0c\u5982\u679c\u9047\u5230null \u8282\u70b9\uff0c\u5c31\u5728str \u7684\u672b\u5c3e\u52a0\u4e0a\u201c#!\u201d\uff0c\u201c#\u201d\u8868\u793a\u8fd9\u4e2a\u8282\u70b9\u4e3a\u7a7a\uff0c\u8282\u70b9\u503c\u4e0d\u5b58\u5728\uff0c\u201c!\u201d\u8868\u793a\u4e00\u4e2a\u503c\u7684\u7ed3\u675f\uff1b\u5982\u679c\u9047\u5230\u4e0d\u4e3a\u7a7a\u7684\u8282\u70b9\uff0c\u5047\u8bbe\u8282\u70b9\u503c\u4e3a3\uff0c\u5c31\u5728str \u7684\u672b\u5c3e\u52a0\u4e0a\u201c3!\u201d\u3002\u6bd4\u5982\uff0c\u5982\u56fe3-6 \u6240\u793a\u7684\u4e8c\u53c9\u6811\u3002<\/p>\n<p>\u6839\u636e\u4e0a\u6587\u7684\u63cf\u8ff0\uff0c\u5148\u5e8f\u904d\u5386\u5e8f\u5217\u5316\uff0c\u6700\u540e\u7684\u7ed3\u679c\u5b57\u7b26\u4e32str \u4e3a\uff1a12!3!#!#!#!\u3002\u4e3a\u4ec0\u4e48\u8981\u5728\u6bcf\u4e2a\u8282\u70b9\u503c\u7684\u540e\u9762\u90fd\u8981\u52a0\u4e0a\u201c!\u201d\u5462\uff1f\u56e0\u4e3a\uff0c\u5982\u679c\u4e0d\u6807\u8bb0\u4e00\u4e2a\u503c\u7684\u7ed3\u675f\uff0c\u90a3\u4e48\u6700\u540e\u4ea7\u751f\u7684\u7ed3\u679c\u4f1a\u6709\u6b67\u4e49\uff0c\u5982\u56fe3-7 \u6240\u793a\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155509.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155509.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom: 50%;\" \/><\/div><\/p>\n<p>\u5982\u679c\u4e0d\u5728\u4e00\u4e2a\u503c\u7ed3\u675f\u65f6\u52a0\u5165\u7279\u6b8a\u5b57\u7b26\uff0c\u90a3\u4e48\u56fe3-6 \u548c\u56fe3-7 \u7684\u5148\u5e8f\u904d\u5386\u5e8f\u5217\u5316\u7ed3\u679c\u90fd\u662f123###\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u751f\u6210\u7684\u5b57\u7b26\u4e32\u5e76\u4e0d\u4ee3\u8868\u552f\u4e00\u7684\u6811\u3002<\/p>\n<p>\u5148\u5e8f\u904d\u5386\u5e8f\u5217\u5316\u7684\u5168\u90e8\u8fc7\u7a0b\u8bf7\u53c2\u770b\u5982\u4e0b\u4ee3\u7801\u4e2d\u7684serialByPre \u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-java\">public static class Node {\n    public int value;\n    public Node left;\n    public Node right;\n\n    public Node(int data) {\n        this.value = data;\n    }\n}\n\npublic static String serialByPre(Node head) {\n    if (head == null) {\n        return &quot;#!&quot;;\n    }\n    String res = head.value + &quot;!&quot;;\n    res += serialByPre(head.left);\n    res += serialByPre(head.right);\n    return res;\n}\n<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20201215100552184.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzQyNDgzMzQx,size_16,color_FFFFFF,t_70'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20201215100552184.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzQyNDgzMzQx,size_16,color_FFFFFF,t_70\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom: 33%;\" \/><\/div><\/p>\n<pre><code class=\"language-java\">public static Node reconByPreString(String preStr) {\n    String[] values = preStr.split(&quot;!&quot;);\n    Queue&lt;String&gt; queue = new LinkedList&lt;String&gt;();\n    for (int i = 0; i != values.length; i++) {\n        queue.offer(values[i]);\n    }\n    return reconPreOrder(queue);\n}\n\npublic static Node reconPreOrder(Queue&lt;String&gt; queue) {\n    String value = queue.poll();\n    if (value.equals(&quot;#&quot;)) {\n        return null;\n    }\n    Node head = new Node(Integer.valueOf(value));\n    head.left = reconPreOrder(queue);\n    head.right = reconPreOrder(queue);\n    return head;\n}<\/code><\/pre>\n<p>\u65b9\u6cd5\u4e8c\uff1a\u901a\u8fc7\u5c42\u904d\u5386\u5b9e\u73b0\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u3002<br \/>\n\u5148\u4ecb\u7ecd\u5c42\u904d\u5386\u4e0b\u7684\u5e8f\u5217\u5316\u8fc7\u7a0b\u3002\u9996\u5148\u5047\u8bbe\u5e8f\u5217\u5316\u7684\u7ed3\u679c\u5b57\u7b26\u4e32\u4e3astr\uff0c\u521d\u59cb\u65f6str=\u201c\u7a7a\u201d\u3002\u7136\u540e\u5b9e\u73b0\u4e8c\u53c9\u6811\u7684\u6309\u5c42\u904d\u5386\uff0c\u5177\u4f53\u65b9\u5f0f\u662f\u5229\u7528\u961f\u5217\u7ed3\u6784\uff0c\u8fd9\u4e5f\u662f\u5bbd\u5ea6\u904d\u5386\u56fe\u7684\u5e38\u89c1\u65b9\u5f0f\u3002\u4f8b\u5982\uff0c\u56fe3-8 \u6240\u793a\u7684\u4e8c\u53c9\u6811\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155509.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155509.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" style=\"zoom: 50%;\" \/><\/div><\/p>\n<p>\u6309\u5c42\u904d\u5386\u56fe3-8 \u6240\u793a\u7684\u4e8c\u53c9\u6811\uff0c\u6700\u540e<code>str=&quot;1!2!3!4!#!#!5!#!#!#!#! &quot;<\/code>\u3002<\/p>\n<p>\u5c42\u904d\u5386\u5e8f\u5217\u5316\u7684\u5168\u90e8\u8fc7\u7a0b\u8bf7\u53c2\u770b\u5982\u4e0b\u4ee3\u7801\u4e2d\u7684serialByLevel \u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-java\">public static String serialByLevel(Node head) {\n    if (head == null) {\n        return &quot;#!&quot;;\n    }\n    String res = head.value + &quot;!&quot;;\n    Queue&lt;Node&gt; queue = new LinkedList&lt;Node&gt;();\n    queue.offer(head);\n    while (!queue.isEmpty()) {\n        head = queue.poll();\n        if (head.left != null) {\n            res += head.left.value + &quot;!&quot;;\n            queue.offer(head.left);\n        } else {\n            res += &quot;#!&quot;;\n        }\n        if (head.right != null) {\n            res += head.right.value + &quot;!&quot;;\n            queue.offer(head.right);\n        } else {\n            res += &quot;#!&quot;;\n        }\n    }\n    return res;\n}<\/code><\/pre>\n<p>\u5148\u5e8f\u904d\u5386\u7684\u53cd\u5e8f\u5217\u5316\u5176\u5b9e\u5c31\u662f\u91cd\u505a\u5148\u5e8f\u904d\u5386\uff0c\u9047\u5230&quot;#\u201c\u5c31\u751f\u6210null \u8282\u70b9\uff0c\u7ed3\u675f\u751f\u6210\u540e\u7eed\u5b50\u6811\u7684\u8fc7\u7a0b\u3002\u4e0e\u6839\u636e\u5148\u5e8f\u904d\u5386\u7684\u53cd\u5e8f\u5217\u5316\u8fc7\u7a0b\u4e00\u6837\uff0c\u6839\u636e\u5c42\u904d\u5386\u7684\u53cd\u5e8f\u5217\u5316\u662f\u91cd\u505a\u5c42\u904d\u5386\uff0c\u9047\u5230\u201d#&quot;\u5c31\u751f\u6210null \u8282\u70b9\uff0c\u540c\u65f6\u4e0d\u628anull \u8282\u70b9\u653e\u5230\u961f\u5217\u91cc\u5373\u53ef\u3002<\/p>\n<p>\u5c42\u904d\u5386\u53cd\u5e8f\u5217\u5316\u7684\u5168\u90e8\u8fc7\u7a0b\u8bf7\u53c2\u770b\u5982\u4e0b\u4ee3\u7801\u4e2d\u7684 reconByLevelString \u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-java\">public static Node reconByLevelString(String levelStr) {\n    String[] values = levelStr.split(&quot;!&quot;);\n    int index = 0;\n    Node head = generateNodeByString(values[index++]);\n    Queue&lt;Node&gt; queue = new LinkedList&lt;Node&gt;();\n    if (head != null) {\n        queue.offer(head);\n    }\n    Node node = null;\n    while (!queue.isEmpty()) {\n        node = queue.poll();\n        node.left = generateNodeByString(values[index++]);\n        node.right = generateNodeByString(values[index++]);\n        if (node.left != null) {\n            queue.offer(node.left);\n        }\n        if (node.right != null) {\n            queue.offer(node.right);\n        }\n    }\n    return head;\n}\n\npublic static Node generateNodeByString(String val) {\n    if (val.equals(&quot;#&quot;)) {\n        return null;\n    }\n    return new Node(Integer.valueOf(val));\n}<\/code><\/pre>\n<h4>\u7ed9\u5b9a\u4e00\u68f5\u4e8c\u53c9\u6811\u7684\u5934\u8282\u70b9head\uff0c\u8fd4\u56de\u8fd9\u9897\u4e8c\u53c9\u6811\u4e2d\u6700\u5927\u7684\u4e8c\u53c9\u641c\u7d22\u5b50\u6811\u7684\u5927\u5c0f<\/h4>\n<pre><code class=\"language-java\">package class12;\nimport java.util.ArrayList;\npublic class Code05_MaxSubBSTSize {\n    public static class Node {\n        public int value;\n        public Node left;\n        public Node right;\n        public Node(int data) {\n            this.value = data;\n        }\n    }\n\n    public static int getBSTSize(Node head) {\n        if (head == null) {\n            return 0;\n        }\n        ArrayList&lt;Node&gt; arr = new ArrayList&lt;&gt;();\n        in(head, arr);\n        for (int i = 1; i &lt; arr.size(); i++) {\n            if (arr.get(i).value &lt;= arr.get(i - 1).value) {\n                return 0;\n            }\n        }\n        return arr.size();\n    }\n\n    public static void in(Node head, ArrayList&lt;Node&gt; arr) {\n        if (head == null) {\n            return;\n        }\n        in(head.left, arr);\n        arr.add(head);\n        in(head.right, arr);\n    }\n\n    public static int maxSubBSTSize1(Node head) {\n        if (head == null) {\n            return 0;\n        }\n        int h = getBSTSize(head);\n        if (h != 0) {\n            return h;\n        }\n        return Math.max(maxSubBSTSize1(head.left), maxSubBSTSize1(head.right));\n    }\n    \/\/  public static int maxSubBSTSize2(Node head) {\n    \/\/      if (head == null) {\n    \/\/          return 0;\n    \/\/      }\n    \/\/      return process(head).maxSubBSTSize;\n    \/\/  }\n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  \/\/ \u4efb\u4f55\u5b50\u6811\n    \/\/  public static class Info {\n    \/\/      public boolean isAllBST;\n    \/\/      public int maxSubBSTSize;\n    \/\/      public int min;\n    \/\/      public int max;\n    \/\/\n    \/\/      public Info(boolean is, int size, int mi, int ma) {\n    \/\/          isAllBST = is;\n    \/\/          maxSubBSTSize = size;\n    \/\/          min = mi;\n    \/\/          max = ma;\n    \/\/      }\n    \/\/  }\n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  \n    \/\/  public static Info process(Node X) {\n    \/\/      if(X == null) {\n    \/\/          return null;\n    \/\/      }\n    \/\/      Info leftInfo = process(X.left);\n    \/\/      Info rightInfo = process(X.right);\n    \/\/      \n    \/\/      \n    \/\/      \n    \/\/      int min = X.value;\n    \/\/      int max = X.value;\n    \/\/      \n    \/\/      if(leftInfo != null) {\n    \/\/          min = Math.min(min, leftInfo.min);\n    \/\/          max = Math.max(max, leftInfo.max);\n    \/\/      }\n    \/\/      if(rightInfo != null) {\n    \/\/          min = Math.min(min, rightInfo.min);\n    \/\/          max = Math.max(max, rightInfo.max);\n    \/\/      }\n    \/\/      \n    \/\/      \n    \/\/      \n    \/\/      \n    \/\/      \n    \/\/      \n    \/\/\n    \/\/      int maxSubBSTSize = 0;\n    \/\/      if(leftInfo != null) {\n    \/\/          maxSubBSTSize = leftInfo.maxSubBSTSize;\n    \/\/      }\n    \/\/      if(rightInfo !=null) {\n    \/\/          maxSubBSTSize = Math.max(maxSubBSTSize, rightInfo.maxSubBSTSize);\n    \/\/      }\n    \/\/      boolean isAllBST = false;\n    \/\/      \n    \/\/      \n    \/\/      if(\n    \/\/              \/\/ \u5de6\u6811\u6574\u4f53\u9700\u8981\u662f\u641c\u7d22\u4e8c\u53c9\u6811\n    \/\/              (  leftInfo == null ? true : leftInfo.isAllBST    )\n    \/\/              &amp;&amp;\n    \/\/              (  rightInfo == null ? true : rightInfo.isAllBST    )\n    \/\/              &amp;&amp;\n    \/\/              \/\/ \u5de6\u6811\u6700\u5927\u503c&lt;x\n    \/\/              (leftInfo == null ? true : leftInfo.max &lt; X.value)\n    \/\/              &amp;&amp;\n    \/\/              (rightInfo == null ? true : rightInfo.min &gt; X.value)\n    \/\/              \n    \/\/              \n    \/\/              ) {\n    \/\/          \n    \/\/          maxSubBSTSize = \n    \/\/                  (leftInfo == null ? 0 : leftInfo.maxSubBSTSize)\n    \/\/                  +\n    \/\/                  (rightInfo == null ? 0 : rightInfo.maxSubBSTSize)\n    \/\/                  +\n    \/\/                  1;\n    \/\/                  isAllBST = true;\n    \/\/          \n    \/\/          \n    \/\/      }\n    \/\/      return new Info(isAllBST, maxSubBSTSize, min, max);\n    \/\/  }\n    public static int maxSubBSTSize2(Node head) {\n        if(head == null) {\n            return 0;\n        }\n        return process(head).maxBSTSubtreeSize;\n    }\n    public static class Info {\n        public int maxBSTSubtreeSize;\n        public int allSize;\n        public int max;\n        public int min;\n        public Info(int m, int a, int ma, int mi) {\n            maxBSTSubtreeSize = m;\n            allSize = a;\n            max = ma;\n            min = mi;\n        }\n    }\n    public static Info process(Node x) {\n        if (x == null) {\n            return null;\n        }\n        Info leftInfo = process(x.left);\n        Info rightInfo = process(x.right);\n        int max = x.value;\n        int min = x.value;\n        int allSize = 1;\n        if (leftInfo != null) {\n            max = Math.max(leftInfo.max, max);\n            min = Math.min(leftInfo.min, min);\n            allSize += leftInfo.allSize;\n        }\n        if (rightInfo != null) {\n            max = Math.max(rightInfo.max, max);\n            min = Math.min(rightInfo.min, min);\n            allSize += rightInfo.allSize;\n        }\n        int p1 = -1;\n        if (leftInfo != null) {\n            p1 = leftInfo.maxBSTSubtreeSize;\n        }\n        int p2 = -1;\n        if (rightInfo != null) {\n            p2 = rightInfo.maxBSTSubtreeSize;\n        }\n        int p3 = -1;\n        boolean leftBST = leftInfo == null ? true : (leftInfo.maxBSTSubtreeSize == leftInfo.allSize);\n        boolean rightBST = rightInfo == null ? true : (rightInfo.maxBSTSubtreeSize == rightInfo.allSize);\n        if (leftBST &amp;&amp; rightBST) {\n            boolean leftMaxLessX = leftInfo == null ? true : (leftInfo.max &lt; x.value);\n            boolean rightMinMoreX = rightInfo == null ? true : (x.value &lt; rightInfo.min);\n            if (leftMaxLessX &amp;&amp; rightMinMoreX) {\n                int leftSize = leftInfo == null ? 0 : leftInfo.allSize;\n                int rightSize = rightInfo == null ? 0 : rightInfo.allSize;\n                p3 = leftSize + rightSize + 1;\n            }\n        }\n        return new Info(Math.max(p1, Math.max(p2, p3)), allSize, max, min);\n    }<\/code><\/pre>\n<h4>\u7ed9\u5b9a\u4e00\u68f5\u4e8c\u53c9\u6811\u7684\u5934\u8282\u70b9head\uff0c\u4efb\u4f55\u4e24\u4e2a\u8282\u70b9\u4e4b\u95f4\u90fd\u5b58\u5728\u8ddd\u79bb\uff0c\u8fd4\u56de\u6574\u68f5\u4e8c\u53c9\u6811\u7684\u6700\u5927\u8ddd\u79bb<\/h4>\n<pre><code class=\"language-java\">package class12;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.HashSet;\npublic class Code06_MaxDistance {\n    public static class Node {\n        public int value;\n        public Node left;\n        public Node right;\n        public Node(int data) {\n            this.value = data;\n        }\n    }\n    public static int maxDistance1(Node head) {\n        if (head == null) {\n            return 0;\n        }\n        ArrayList&lt;Node&gt; arr = getPrelist(head);\n        HashMap&lt;Node, Node&gt; parentMap = getParentMap(head);\n        int max = 0;\n        for (int i = 0; i &lt; arr.size(); i++) {\n            for (int j = i; j &lt; arr.size(); j++) {\n                max = Math.max(max, distance(parentMap, arr.get(i), arr.get(j)));\n            }\n        }\n        return max;\n    }\n    public static ArrayList&lt;Node&gt; getPrelist(Node head) {\n        ArrayList&lt;Node&gt; arr = new ArrayList&lt;&gt;();\n        fillPrelist(head, arr);\n        return arr;\n    }\n    public static void fillPrelist(Node head, ArrayList&lt;Node&gt; arr) {\n        if (head == null) {\n            return;\n        }\n        arr.add(head);\n        fillPrelist(head.left, arr);\n        fillPrelist(head.right, arr);\n    }\n    public static HashMap&lt;Node, Node&gt; getParentMap(Node head) {\n        HashMap&lt;Node, Node&gt; map = new HashMap&lt;&gt;();\n        map.put(head, null);\n        fillParentMap(head, map);\n        return map;\n    }\n    public static void fillParentMap(Node head, HashMap&lt;Node, Node&gt; parentMap) {\n        if (head.left != null) {\n            parentMap.put(head.left, head);\n            fillParentMap(head.left, parentMap);\n        }\n        if (head.right != null) {\n            parentMap.put(head.right, head);\n            fillParentMap(head.right, parentMap);\n        }\n    }\n    public static int distance(HashMap&lt;Node, Node&gt; parentMap, Node o1, Node o2) {\n        HashSet&lt;Node&gt; o1Set = new HashSet&lt;&gt;();\n        Node cur = o1;\n        o1Set.add(cur);\n        while (parentMap.get(cur) != null) {\n            cur = parentMap.get(cur);\n            o1Set.add(cur);\n        }\n        cur = o2;\n        while (!o1Set.contains(cur)) {\n            cur = parentMap.get(cur);\n        }\n        Node lowestAncestor = cur;\n        cur = o1;\n        int distance1 = 1;\n        while (cur != lowestAncestor) {\n            cur = parentMap.get(cur);\n            distance1++;\n        }\n        cur = o2;\n        int distance2 = 1;\n        while (cur != lowestAncestor) {\n            cur = parentMap.get(cur);\n            distance2++;\n        }\n        return distance1 + distance2 - 1;\n    }\n    \/\/  public static int maxDistance2(Node head) {\n    \/\/      return process(head).maxDistance;\n    \/\/  }\n    \/\/\n    \/\/  public static class Info {\n    \/\/      public int maxDistance;\n    \/\/      public int height;\n    \/\/\n    \/\/      public Info(int dis, int h) {\n    \/\/          maxDistance = dis;\n    \/\/          height = h;\n    \/\/      }\n    \/\/  }\n    \/\/\n    \/\/  public static Info process(Node X) {\n    \/\/      if (X == null) {\n    \/\/          return new Info(0, 0);\n    \/\/      }\n    \/\/      Info leftInfo = process(X.left);\n    \/\/      Info rightInfo = process(X.right);\n    \/\/      int height = Math.max(leftInfo.height, rightInfo.height) + 1;\n    \/\/      int maxDistance = Math.max(\n    \/\/              Math.max(leftInfo.maxDistance, rightInfo.maxDistance),\n    \/\/              leftInfo.height + rightInfo.height + 1);\n    \/\/      return new Info(maxDistance, height);\n    \/\/  }\n    public static int maxDistance2(Node head) {\n        return process(head).maxDistance;\n    }\n    public static class Info {\n        public int maxDistance;\n        public int height;\n        public Info(int m, int h) {\n            maxDistance = m;\n            height = h;\n        }\n    }\n    public static Info process(Node x) {\n        if (x == null) {\n            return new Info(0, 0);\n        }\n        Info leftInfo = process(x.left);\n        Info rightInfo = process(x.right);\n        int height = Math.max(leftInfo.height, rightInfo.height) + 1;\n        int p1 = leftInfo.maxDistance;\n        int p2 = rightInfo.maxDistance;\n        int p3 = leftInfo.height + rightInfo.height + 1;\n        int maxDistance = Math.max(Math.max(p1, p2), p3);\n        return new Info(maxDistance, height);\n    }<\/code><\/pre>\n<h2>6.\u56fe<\/h2>\n<h4>\u8868\u8fbe\u65b9\u5f0f<\/h4>\n<ol>\n<li>\u90bb\u63a5\u8868\u6cd5<\/li>\n<li>\u90bb\u63a5\u77e9\u9635\u6cd5<\/li>\n<\/ol>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/images2017.cnblogs.com\/blog\/981164\/201802\/981164-20180207092958654-966183802.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/images2017.cnblogs.com\/blog\/981164\/201802\/981164-20180207092958654-966183802.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom: 67%;\" \/><\/div><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155520.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155520.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:67%;\" \/><\/div><\/p>\n<h4>\u56fe\u7684\u5143\u7d20<\/h4>\n<pre><code class=\"language-java\">\/\/edge\npackage basic_class_06;\npublic class Edge {\n    public int weight;\n    public Node from;\n    public Node to;\n    public Edge(int weight, Node from, Node to) {\n        this.weight = weight;\n        this.from = from;\n        this.to = to;\n    }\n}\n\/\/Graph\npackage basic_class_06;\nimport java.util.HashMap;\nimport java.util.HashSet;\npublic class Graph {\n    public HashMap&lt;Integer,Node&gt; nodes;\n    public HashSet&lt;Edge&gt; edges;\n    public Graph() {\n        nodes = new HashMap&lt;&gt;();\n        edges = new HashSet&lt;&gt;();\n    }\n}\n\/\/GraphGenerator\npackage basic_class_06;\npublic class GraphGenerator {\n    public static Graph createGraph(Integer[][] matrix) {\n        Graph graph = new Graph();\n        for (int i = 0; i &lt; matrix.length; i++) {\n            Integer weight = matrix[i][0];\n            Integer from = matrix[i][1];\n            Integer to = matrix[i][2];\n            if (!graph.nodes.containsKey(from)) {\n                graph.nodes.put(from, new Node(from));\n            }\n            if (!graph.nodes.containsKey(to)) {\n                graph.nodes.put(to, new Node(to));\n            }\n            Node fromNode = graph.nodes.get(from);\n            Node toNode = graph.nodes.get(to);\n            Edge newEdge = new Edge(weight, fromNode, toNode);\n            fromNode.nexts.add(toNode);\n            fromNode.out++;\n            toNode.in++;\n            fromNode.edges.add(newEdge);\n            graph.edges.add(newEdge);\n        }\n        return graph;\n    }\n}\n\/\/node\npackage basic_class_06;\nimport java.util.ArrayList;\npublic class Node {\n    public int value;\n    public int in;\n    public int out;\n    public ArrayList&lt;Node&gt; nexts;\n    public ArrayList&lt;Edge&gt; edges;\n    public Node(int value) {\n        this.value = value;\n        in = 0;\n        out = 0;\n        nexts = new ArrayList&lt;&gt;();\n        edges = new ArrayList&lt;&gt;();\n    }\n}<\/code><\/pre>\n<h4>\u56fe\u7684\u5bbd\u5ea6\u4f18\u5148\u904d\u5386<\/h4>\n<ol>\n<li>\u5229\u7528\u961f\u5217\u5b9e\u73b0\n<li>\u4ece\u6e90\u8282\u70b9\u5f00\u59cb\u4f9d\u6b21\u6309\u7167\u5bbd\u5ea6\u8fdb\u961f\u5217\uff0c\u7136\u540e\u5f39\u51fa\n<li>\u6bcf\u5f39\u51fa\u4e00\u4e2a\u70b9\uff0c\u628a\u8be5\u8282\u70b9\u6240\u6709\u6ca1\u8fdb\u8fc7\u961f\u5217\u7684\u90bb\u63a5\u70b9\u653e\u5165\u961f\u5217\n<li>\u77e5\u9053\u961f\u5217\u53d8\u7a7a\n<\/ol>\n<h4>\u5e7f\u5ea6\u4f18\u5148\u904d\u5386<\/h4>\n<ol>\n<li>\u5229\u7528\u6808\u5b9e\u73b0\n<li>\u4ece\u6e90\u8282\u70b9\u5f00\u59cb\u628a\u8282\u70b9\u6309\u7167\u6df1\u5ea6\u653e\u5165\u6808\n<li>\u6bcf\u5f39\u51fa\u4e00\u4e2a\u70b9\uff0c\u628a\u8be5\u8282\u70b9\u6240\u6709\u6ca1\u8fdb\u8fc7\u6808\u7684\u90bb\u63a5\u70b9\u653e\u5165\u6808\n<li>\u77e5\u9053\u6808\u53d8\u7a7a\n<\/ol>\n<pre><code class=\"language-java\">\/\/\u5bbd\u5ea6\u4f18\u5148\u904d\u5386\npackage basic_class_06;\nimport java.util.HashSet;\nimport java.util.LinkedList;\nimport java.util.Queue;\npublic class Code_01_BFS {\n    public static void bfs(Node node) {\n        if (node == null) {\n            return;\n        }\n        Queue&lt;Node&gt; queue = new LinkedList&lt;&gt;();\n        HashSet&lt;Node&gt; map = new HashSet&lt;&gt;();\n        queue.add(node);\n        map.add(node);\n        while (!queue.isEmpty()) {\n            Node cur = queue.poll();\n            System.out.println(cur.value);\n            for (Node next : cur.nexts) {\n                if (!map.contains(next)) {\n                    map.add(next);\n                    queue.add(next);\n                }\n            }\n        }\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">\/\/\u6df1\u5ea6\u4f18\u5148\u904d\u5386\npackage basic_class_06;\nimport java.util.HashSet;\nimport java.util.Stack;\npublic class Code_02_DFS {\n    public static void dfs(Node node) {\n        if (node == null) {\n            return;\n        }\n        Stack&lt;Node&gt; stack = new Stack&lt;&gt;();\n        HashSet&lt;Node&gt; set = new HashSet&lt;&gt;();\n        stack.add(node);\n        set.add(node);\n        System.out.println(node.value);\n        while (!stack.isEmpty()) {\n            Node cur = stack.pop();\n            for (Node next : cur.nexts) {\n                if (!set.contains(next)) {\n                    stack.push(cur);\n                    stack.push(next);\n                    set.add(next);\n                    System.out.println(next.value);\n                    break;\n                }\n            }\n        }\n    }\n}<\/code><\/pre>\n<h4>\u62d3\u6251\u6392\u5e8f\u7b97\u6cd5<\/h4>\n<pre><code class=\"language-java\">package basic_class_06;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Queue;\n\npublic class Code_03_TopologySort {\n\n    \/\/ directed graph and no loop\n    public static List&lt;Node&gt; sortedTopology(Graph graph) {\n        HashMap&lt;Node, Integer&gt; inMap = new HashMap&lt;&gt;();\n        Queue&lt;Node&gt; zeroInQueue = new LinkedList&lt;&gt;();\n        for (Node node : graph.nodes.values()) {\n            inMap.put(node, node.in);\n            if (node.in == 0) {\n                zeroInQueue.add(node);\n            }\n        }\n        List&lt;Node&gt; result = new ArrayList&lt;&gt;();\n        while (!zeroInQueue.isEmpty()) {\n            Node cur = zeroInQueue.poll();\n            result.add(cur);\n            for (Node next : cur.nexts) {\n                inMap.put(next, inMap.get(next) - 1);\n                if (inMap.get(next) == 0) {\n                    zeroInQueue.add(next);\n                }\n            }\n        }\n        return result;\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">package basic_class_06;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Queue;\n\npublic class Code_03_TopologySort {\n\n    \/\/ directed graph and no loop\n    public static List&lt;Node&gt; sortedTopology(Graph graph) {\n        HashMap&lt;Node, Integer&gt; inMap = new HashMap&lt;&gt;();\n        Queue&lt;Node&gt; zeroInQueue = new LinkedList&lt;&gt;();\n        for (Node node : graph.nodes.values()) {\n            inMap.put(node, node.in);\n            if (node.in == 0) {\n                zeroInQueue.add(node);\n            }\n        }\n        List&lt;Node&gt; result = new ArrayList&lt;&gt;();\n        while (!zeroInQueue.isEmpty()) {\n            Node cur = zeroInQueue.poll();\n            result.add(cur);\n            for (Node next : cur.nexts) {\n                inMap.put(next, inMap.get(next) - 1);\n                if (inMap.get(next) == 0) {\n                    zeroInQueue.add(next);\n                }\n            }\n        }\n        return result;\n    }\n}<\/code><\/pre>\n<h4><strong>Kruskal<\/strong>\u2014\u2014\u6c42\u6700\u5c0f\u751f\u6210\u6811<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155521.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155521.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:67%;\" \/><\/div><\/p>\n<pre><code class=\"language-java\">package basic_class_06;\n\nimport java.util.Collection;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.PriorityQueue;\nimport java.util.Set;\n\n\/\/undirected graph only\npublic class Code_04_Kruskal {\n\n    \/\/ Union-Find Set\n    public static class UnionFind {\n        private HashMap&lt;Node, Node&gt; fatherMap;\n        private HashMap&lt;Node, Integer&gt; rankMap;\n\n        public UnionFind() {\n            fatherMap = new HashMap&lt;Node, Node&gt;();\n            rankMap = new HashMap&lt;Node, Integer&gt;();\n        }\n\n        private Node findFather(Node n) {\n            Node father = fatherMap.get(n);\n            if (father != n) {\n                father = findFather(father);\n            }\n            fatherMap.put(n, father);\n            return father;\n        }\n\n        public void makeSets(Collection&lt;Node&gt; nodes) {\n            fatherMap.clear();\n            rankMap.clear();\n            for (Node node : nodes) {\n                fatherMap.put(node, node);\n                rankMap.put(node, 1);\n            }\n        }\n\n        public boolean isSameSet(Node a, Node b) {\n            return findFather(a) == findFather(b);\n        }\n\n        public void union(Node a, Node b) {\n            if (a == null || b == null) {\n                return;\n            }\n            Node aFather = findFather(a);\n            Node bFather = findFather(b);\n            if (aFather != bFather) {\n                int aFrank = rankMap.get(aFather);\n                int bFrank = rankMap.get(bFather);\n                if (aFrank &lt;= bFrank) {\n                    fatherMap.put(aFather, bFather);\n                    rankMap.put(bFather, aFrank + bFrank);\n                } else {\n                    fatherMap.put(bFather, aFather);\n                    rankMap.put(aFather, aFrank + bFrank);\n                }\n            }\n        }\n    }\n\n    public static class EdgeComparator implements Comparator&lt;Edge&gt; {\n\n        @Override\n        public int compare(Edge o1, Edge o2) {\n            return o1.weight - o2.weight;\n        }\n\n    }\n\/\/Kruskal\n    public static Set&lt;Edge&gt; kruskalMST(Graph graph) {\n        UnionFind unionFind = new UnionFind();\n        unionFind.makeSets(graph.nodes.values());\n        PriorityQueue&lt;Edge&gt; priorityQueue = new PriorityQueue&lt;&gt;(new EdgeComparator());\n        for (Edge edge : graph.edges) {\n            priorityQueue.add(edge);\n        }\n        Set&lt;Edge&gt; result = new HashSet&lt;&gt;();\n        while (!priorityQueue.isEmpty()) {\n            Edge edge = priorityQueue.poll();\n            if (!unionFind.isSameSet(edge.from, edge.to)) {\n                result.add(edge);\n                unionFind.union(edge.from, edge.to);\n            }\n        }\n        return result;\n    }\n}<\/code><\/pre>\n<h4><strong>prim<\/strong>\u2014\u2014\u65e0\u5411\u56fe\u6c42\u6700\u5c0f\u751f\u6210\u6811<\/h4>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">\u56fe\u4f8b<\/th>\n<th>\u8bf4\u660e<\/th>\n<th>\u4e0d\u53ef\u9009<\/th>\n<th>\u53ef\u9009<\/th>\n<th>\u5df2\u9009\uff08Vnew\uff09<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459965.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459965.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:25%;\" \/><\/div><\/td>\n<td>\u6b64\u4e3a\u539f\u59cb\u7684\u52a0\u6743\u8fde\u901a\u56fe\u3002\u6bcf\u6761\u8fb9\u4e00\u4fa7\u7684\u6570\u5b57\u4ee3\u8868\u5176\u6743\u503c\u3002<\/td>\n<td>-<\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459361.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459361.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:25%;\" \/><\/div><\/td>\n<td>\u9876\u70b9<strong>D<\/strong>\u88ab\u4efb\u610f\u9009\u4e3a\u8d77\u59cb\u70b9\u3002\u9876\u70b9<strong>A<\/strong>\u3001<strong>B<\/strong>\u3001<strong>E<\/strong>\u548c<strong>F<\/strong>\u901a\u8fc7\u5355\u6761\u8fb9\u4e0e<strong>D<\/strong>\u76f8\u8fde\u3002<strong>A<\/strong>\u662f\u8ddd\u79bb<strong>D<\/strong>\u6700\u8fd1\u7684\u9876\u70b9\uff0c\u56e0\u6b64\u5c06<strong>A<\/strong>\u53ca\u5bf9\u5e94\u8fb9<strong>AD<\/strong>\u4ee5\u9ad8\u4eae\u8868\u793a\u3002<\/td>\n<td>C, G<\/td>\n<td>A, B, E, F<\/td>\n<td>D<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459358.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459358.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:25%;\" \/><\/div><\/td>\n<td>\u4e0b\u4e00\u4e2a\u9876\u70b9\u4e3a\u8ddd\u79bb<strong>D<\/strong>\u6216<strong>A<\/strong>\u6700\u8fd1\u7684\u9876\u70b9\u3002<strong>B<\/strong>\u8ddd<strong>D<\/strong>\u4e3a9\uff0c\u8ddd<strong>A<\/strong>\u4e3a7\uff0c<strong>E<\/strong>\u4e3a15\uff0c<strong>F<\/strong>\u4e3a6\u3002\u56e0\u6b64\uff0c<strong>F<\/strong>\u8ddd<strong>D<\/strong>\u6216<strong>A<\/strong>\u6700\u8fd1\uff0c\u56e0\u6b64\u5c06\u9876\u70b9<strong>F<\/strong>\u4e0e\u76f8\u5e94\u8fb9<strong>DF<\/strong>\u4ee5\u9ad8\u4eae\u8868\u793a\u3002<\/td>\n<td>C, G<\/td>\n<td>B, E, F<\/td>\n<td>A, D<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459221.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459221.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:25%;\" \/><\/div><\/td>\n<td>\u7b97\u6cd5\u7ee7\u7eed\u91cd\u590d\u4e0a\u9762\u7684\u6b65\u9aa4\u3002\u8ddd\u79bb<strong>A<\/strong>\u4e3a7\u7684\u9876\u70b9<strong>B<\/strong>\u88ab\u9ad8\u4eae\u8868\u793a\u3002<\/td>\n<td>C<\/td>\n<td>B, E, G<\/td>\n<td>A, D, F<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459370.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459370.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:25%;\" \/><\/div><\/td>\n<td>\u5728\u5f53\u524d\u60c5\u51b5\u4e0b\uff0c\u53ef\u4ee5\u5728<strong>C<\/strong>\u3001<strong>E<\/strong>\u4e0e<strong>G<\/strong>\u95f4\u8fdb\u884c\u9009\u62e9\u3002<strong>C<\/strong>\u8ddd<strong>B<\/strong>\u4e3a8\uff0c<strong>E<\/strong>\u8ddd<strong>B<\/strong>\u4e3a7\uff0c<strong>G<\/strong>\u8ddd<strong>F<\/strong>\u4e3a11\u3002<strong>E<\/strong>\u6700\u8fd1\uff0c\u56e0\u6b64\u5c06\u9876\u70b9<strong>E<\/strong>\u4e0e\u76f8\u5e94\u8fb9<strong>BE<\/strong>\u9ad8\u4eae\u8868\u793a\u3002<\/td>\n<td>\u65e0<\/td>\n<td>C, E, G<\/td>\n<td>A, D, F, B<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459764.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459764.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:25%;\" \/><\/div><\/td>\n<td>\u8fd9\u91cc\uff0c\u53ef\u4f9b\u9009\u62e9\u7684\u9876\u70b9\u53ea\u6709<strong>C<\/strong>\u548c<strong>G<\/strong>\u3002<strong>C<\/strong>\u8ddd<strong>E<\/strong>\u4e3a5\uff0c<strong>G<\/strong>\u8ddd<strong>E<\/strong>\u4e3a9\uff0c\u6545\u9009\u53d6<strong>C<\/strong>\uff0c\u5e76\u4e0e\u8fb9<strong>EC<\/strong>\u4e00\u540c\u9ad8\u4eae\u8868\u793a\u3002<\/td>\n<td>\u65e0<\/td>\n<td>C, G<\/td>\n<td>A, D, F, B, E<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459665.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459665.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:25%;\" \/><\/div><\/td>\n<td>\u9876\u70b9<strong>G<\/strong>\u662f\u552f\u4e00\u5269\u4e0b\u7684\u9876\u70b9\uff0c\u5b83\u8ddd<strong>F<\/strong>\u4e3a11\uff0c\u8ddd<strong>E<\/strong>\u4e3a9\uff0c<strong>E<\/strong>\u6700\u8fd1\uff0c\u6545\u9ad8\u4eae\u8868\u793a<strong>G<\/strong>\u53ca\u76f8\u5e94\u8fb9<strong>EG<\/strong>\u3002<\/td>\n<td>\u65e0<\/td>\n<td>G<\/td>\n<td>A, D, F, B, E, C<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459405.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141459405.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:25%;\" \/><\/div><\/td>\n<td>\u73b0\u5728\uff0c\u6240\u6709\u9876\u70b9\u5747\u5df2\u88ab\u9009\u53d6\uff0c\u56fe\u4e2d\u7eff\u8272\u90e8\u5206\u5373\u4e3a\u8fde\u901a\u56fe\u7684\u6700\u5c0f\u751f\u6210\u6811\u3002\u5728\u6b64\u4f8b\u4e2d\uff0c\u6700\u5c0f\u751f\u6210\u6811\u7684\u6743\u503c\u4e4b\u548c\u4e3a39\u3002<\/td>\n<td>\u65e0<\/td>\n<td>\u65e0<\/td>\n<td>A, D, F, B, E, C, G<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-java\">package basic_class_06;\n\nimport java.util.Comparator;\nimport java.util.HashSet;\nimport java.util.PriorityQueue;\nimport java.util.Set;\n\n\/\/ undirected graph only\npublic class Code_05_Prim {\n\n    public static class EdgeComparator implements Comparator&lt;Edge&gt; {\n\n        @Override\n        public int compare(Edge o1, Edge o2) {\n            return o1.weight - o2.weight;\n        }\n\n    }\n\n    public static Set&lt;Edge&gt; primMST(Graph graph) {\n        PriorityQueue&lt;Edge&gt; priorityQueue = new PriorityQueue&lt;&gt;(\n                new EdgeComparator());\n        HashSet&lt;Node&gt; set = new HashSet&lt;&gt;();\n        Set&lt;Edge&gt; result = new HashSet&lt;&gt;();\n        for (Node node : graph.nodes.values()) {\n            if (!set.contains(node)) {\n                set.add(node);\n                for (Edge edge : node.edges) {\n                    priorityQueue.add(edge);\n                }\n                while (!priorityQueue.isEmpty()) {\n                    Edge edge = priorityQueue.poll();\n                    Node toNode = edge.to;\n                    if (!set.contains(toNode)) {\n                        set.add(toNode);\n                        result.add(edge);\n                        for (Edge nextEdge : toNode.edges) {\n                            priorityQueue.add(nextEdge);\n                        }\n                    }\n                }\n            }\n        }\n        return result;\n    }\n\n}<\/code><\/pre>\n<h4><strong>Dijkstra<\/strong><\/h4>\n<p>ps\uff1a\u4e0d\u80fd\u6709\u6743\u503c\u4e3a\u8d1f\u6570\u7684\u73af<\/p>\n<p>\u5047\u8bbe\u6709\u4e0b\u9762\u8fd9\u4e2a\u56fe\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155522.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155522.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>Dijkstra \u7b97\u6cd5\u5c06\u4f1a\u5bfb\u627e\u51fa\u56fe\u4e2d\u8282\u70b9 <code>0<\/code> \u5230\u6240\u6709\u5176\u4ed6\u8282\u70b9\u7684\u6700\u77ed\u8def\u5f84\u3002<\/p>\n<p><strong>\ud83d\udca1 \u63d0\u793a\uff1a<\/strong> \u5728\u8fd9\u4e2a\u56fe\u4e2d\uff0c\u6211\u4eec\u5047\u5b9a\u4e24\u4e2a\u8282\u70b9\u4e4b\u95f4\u7684\u6743\u91cd\u8868\u793a\u5b83\u4eec\u4e4b\u95f4\u7684\u8ddd\u79bb\u3002<\/p>\n<p>\u6211\u4eec\u5c06\u4f1a\u5f97\u5230\u8282\u70b9 <code>0<\/code> \u5230\u8282\u70b9 <code>1<\/code>\u3001\u8282\u70b9 <code>0<\/code> \u5230\u8282\u70b9 <code>2<\/code>\u3001\u8282\u70b9 <code>0<\/code> \u5230 \u8282\u70b9 <code>3<\/code>\u2026\u2026\uff08\u4ee5\u6b64\u7c7b\u63a8\uff09\u7684\u6700\u77ed\u8def\u5f84\u3002<\/p>\n<p>\u521d\u59cb\u7684\u8ddd\u79bb\u5217\u8868\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li>\u6e90\u8282\u70b9\u5230\u5b83\u81ea\u8eab\u7684\u8ddd\u79bb\u4e3a <code>0<\/code>\u3002\u793a\u4f8b\u4e2d\u7684\u6e90\u8282\u70b9\u5b9a\u4e3a\u8282\u70b9 <code>0<\/code>\uff0c\u4e0d\u8fc7\u4f60\u4e5f\u53ef\u4ee5\u9009\u62e9\u4efb\u610f\u5176\u5b83\u8282\u70b9\u4f5c\u4e3a\u6e90\u8282\u70b9\u3002<\/li>\n<li>\u6e90\u8282\u70b9\u5230\u5176\u5b83\u8282\u70b9\u7684\u8ddd\u79bb\u8fd8\u6ca1\u6709\u786e\u5b9a\uff0c\u6240\u4ee5\u5148\u6807\u8bb0\u4e3a\u65e0\u7a77\u5927\u3002<\/li>\n<\/ul>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155523.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155523.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u8fd8\u6709\u4e00\u4e2a\u5217\u8868\u7528\u6765\u8bb0\u5f55\u54ea\u4e9b\u8282\u70b9\u672a\u88ab\u8bbf\u95ee\uff08\u5373\u5c1a\u672a\u88ab\u5305\u542b\u5728\u8def\u5f84\u4e2d\uff09\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155524.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155524.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><strong>\ud83d\udca1 \u63d0\u793a\uff1a<\/strong> \u8bb0\u4f4f\uff0c\u5f53\u6240\u6709\u8282\u70b9\u90fd\u88ab\u6dfb\u52a0\u5230\u8def\u5f84\u4e2d\u65f6\uff0c\u7b97\u6cd5\u7684\u8ba1\u7b97\u8fc7\u7a0b\u5c31\u5b8c\u6210\u4e86\u3002<\/p>\n<p>\u6211\u4eec\u9009\u62e9\u4e86\u4ece\u8282\u70b9 <code>0<\/code> \u51fa\u53d1\uff0c\u53ef\u4ee5\u76f4\u63a5\u5c06\u5b83\u6807\u8bb0\u4e3a\u201c\u5df2\u8bbf\u95ee\u201d\uff0c\u540c\u6837\u7684\uff0c\u5728\u672a\u8bbf\u95ee\u8282\u70b9\u5217\u8868\u4e2d\u628a\u5b83\u5212\u6389\uff0c\u5e76\u5728\u56fe\u4e2d\u7ed9\u5b83\u52a0\u4e0a\u7ea2\u8272\u7684\u8fb9\u6846\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.freecodecamp.org\/news\/content\/images\/2020\/06\/image-87.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/www.freecodecamp.org\/news\/content\/images\/2020\/06\/image-87.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155525.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155525.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u73b0\u5728\u9700\u8981\u68c0\u67e5\u8282\u70b9 <code>0<\/code> \u5230\u76f8\u90bb\u8282\u70b9\u7684\u8ddd\u79bb\uff0c\u4e24\u4e2a\u76f8\u90bb\u8282\u70b9\u5206\u522b\u662f\u8282\u70b9 <code>1<\/code> \u548c\u8282\u70b9 <code>2<\/code>\uff08\u6ce8\u610f\u770b\u7ea2\u8272\u7684\u8fb9\uff09\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155526.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155526.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><strong>\ud83d\udca1 \u63d0\u793a\uff1a<\/strong> \u8fd9\u5e76\u4e0d\u662f\u8bf4\u7acb\u5373\u628a\u8fd9\u4e24\u4e2a\u76f8\u90bb\u8282\u70b9\u52a0\u5165\u5230\u6700\u77ed\u8def\u5f84\u4e2d\u3002\u5728\u628a\u4e00\u4e2a\u8282\u70b9\u52a0\u5165\u5230\u6700\u77ed\u8def\u5f84\u4e4b\u524d\uff0c\u9700\u8981\u786e\u8ba4\u662f\u5426\u5df2\u7ecf\u5bfb\u627e\u5230\u4e86\u8bbf\u95ee\u5b83\u7684\u6700\u77ed\u8def\u5f84\u3002\u73b0\u5728\u53ea\u662f\u5728\u5bf9\u53ef\u9009\u65b9\u6848\u505a\u521d\u6b65\u68c0\u67e5\u3002<\/p>\n<p>\u66f4\u65b0\u8282\u70b9 <code>0<\/code> \u5230\u8282\u70b9 <code>1<\/code>\u3001\u8282\u70b9 <code>0<\/code> \u5230\u8282\u70b9 <code>2<\/code> \u7684\u8ddd\u79bb\u4e3a\u5b83\u4eec\u4e4b\u95f4\u7684\u8fb9\u7684\u6743\u91cd\uff0c\u5206\u522b\u4e3a 2 \u548c 6\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155527.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155527.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u66f4\u65b0\u4e86\u5230\u76f8\u90bb\u8282\u70b9\u7684\u8ddd\u79bb\u4e4b\u540e\uff1a<\/p>\n<ul>\n<li>\u6839\u636e\u5df2\u77e5\u7684\u8ddd\u79bb\u5217\u8868\u9009\u62e9\u8ddd\u79bb\u6e90\u8282\u70b9\u6700\u8fd1\u7684\u8282\u70b9\u3002<\/li>\n<li>\u5c06\u5b83\u6807\u8bb0\u4e3a\u201c\u5df2\u8bbf\u95ee\u201d\u3002<\/li>\n<li>\u5c06\u5b83\u6dfb\u52a0\u5230\u8def\u5f84\u4e2d\u3002<\/li>\n<\/ul>\n<p>\u67e5\u770b\u8ddd\u79bb\u5217\u8868\uff0c\u53d1\u73b0\u8282\u70b9 <code>1<\/code> \u5230\u6e90\u8282\u70b9\u7684\u8ddd\u79bb\u662f\u6700\u77ed\u7684\uff08\u8ddd\u79bb\u4e3a 2\uff09\uff0c\u6240\u4ee5\u628a\u5b83\u52a0\u5165\u5230\u8def\u5f84\u4e2d\u3002<\/p>\n<p>\u5728\u56fe\u4e2d\uff0c\u4ee5\u7ea2\u8272\u8fb9\u6765\u8868\u793a\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155528.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155528.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5728\u8ddd\u79bb\u5217\u8868\u4e2d\u7528\u7ea2\u8272\u65b9\u5757\u6807\u8bb0\u8fd9\u4e2a\u8282\u70b9\uff0c\u8868\u660e\u5b83\u662f\u201c\u5df2\u8bbf\u95ee\u201d\u7684\u3001\u5df2\u7ecf\u5bfb\u627e\u5230\u4e86\u8bbf\u95ee\u8fd9\u4e2a\u8282\u70b9\u7684\u6700\u77ed\u8def\u5f84\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155529.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155529.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5728\u672a\u8bbf\u95ee\u8282\u70b9\u5217\u8868\u4e2d\u5c06\u5b83\u5212\u6389\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155530.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155530.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u73b0\u5728\u5206\u6790\u65b0\u7684\u76f8\u90bb\u8282\u70b9\uff0c\u5bfb\u627e\u8bbf\u95ee\u5b83\u4eec\u7684\u6700\u77ed\u8def\u5f84\u3002\u53ea\u9700\u8981\u5206\u6790\u5df2\u7ecf\u5728\u6700\u77ed\u8def\u5f84\uff08\u6807\u8bb0\u4e3a\u7ea2\u8272\u8fb9\uff09\u4e2d\u7684\u8282\u70b9\u7684\u76f8\u90bb\u8282\u70b9\u3002<\/p>\n<p>\u8282\u70b9 <code>2<\/code> \u548c\u8282\u70b9 <code>3<\/code> \u90fd\u662f\u6700\u77ed\u8def\u5f84\u5305\u542b\u7684\u8282\u70b9\u7684\u76f8\u90bb\u8282\u70b9\uff0c\u56e0\u4e3a\u5b83\u4eec\u5206\u522b\u4e0e\u8282\u70b9 <code>0<\/code> \u548c\u8282\u70b9 <code>1<\/code> \u76f4\u63a5\u76f8\u8fde\uff0c\u5982\u4e0b\u56fe\u6240\u793a\u3002\u4e0b\u4e00\u6b65\u5c06\u8981\u5206\u6790\u8fd9\u4e24\u4e2a\u8282\u70b9\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155531.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155531.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u4e4b\u524d\u5df2\u7ecf\u8ba1\u7b97\u8fc7\u6e90\u8282\u70b9\u5230\u8282\u70b9 <code>2<\/code> \u7684\u8ddd\u79bb\uff0c\u5e76\u8bb0\u5f55\u5728\u4e86\u5217\u8868\u4e2d\uff0c\u6240\u4ee5\u4e0d\u7528\u66f4\u65b0\u3002\u8fd9\u6b21\u53ea\u9700\u8981\u66f4\u65b0\u6e90\u8282\u70b9\u5230\u65b0\u7684\u76f8\u90bb\u8282\u70b9\uff08\u8282\u70b9 <code>3<\/code>\uff09\u7684\u8ddd\u79bb\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155532.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155532.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u8fd9\u4e2a\u8ddd\u79bb\u662f <strong>7<\/strong>\uff0c\u6765\u770b\u770b\u4e3a\u4ec0\u4e48\u3002<\/p>\n<p>\u4e3a\u4e86\u8ba1\u7b97\u6e90\u8282\u70b9\u5230\u53e6\u4e00\u4e2a\u8282\u70b9\uff08\u8fd9\u91cc\u6307\u8282\u70b9 <code>3<\/code>\uff09\u7684\u8ddd\u79bb\uff0c\u9700\u8981\u628a\u8bbf\u95ee\u8be5\u8282\u70b9\u7684\u6700\u77ed\u8def\u5f84\u7684\u6240\u6709\u8fb9\u6743\u91cd\u76f8\u52a0\uff1a<\/p>\n<ul>\n<li><strong>\u5bf9\u4e8e\u8282\u70b9 <code>3<\/code>\uff1a<\/strong> \u5c06\u6784\u6210\u8def\u5f84 <code>0 -&gt; 1 -&gt; 3<\/code> \u7684\u6240\u6709\u8fb9\u6743\u91cd\u76f8\u52a0\uff0c\u5f97\u5230\u603b\u8ddd\u79bb\u4e3a <strong>7<\/strong>\uff08<code>0 -&gt; 1<\/code> \u8ddd\u79bb\u4e3a 2\uff0c<code>1 -&gt; 3<\/code> \u8ddd\u79bb\u4e3a 5\uff09\u3002<\/li>\n<\/ul>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155533.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155533.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u73b0\u5728\u5f97\u5230\u4e86\u5230\u76f8\u90bb\u8282\u70b9\u7684\u8ddd\u79bb\uff0c\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u8282\u70b9\u6dfb\u52a0\u5230\u8def\u5f84\u4e2d\u3002\u6211\u4eec\u5fc5\u987b\u9009\u62e9\u4e00\u4e2a\u5df2\u77e5\u5230\u6e90\u8282\u70b9\u8ddd\u79bb\u6700\u77ed\u7684<strong>\u672a\u8bbf\u95ee<\/strong>\u8282\u70b9\u3002<\/p>\n<p>\u4ece\u8ddd\u79bb\u5217\u8868\u4e2d\u53ef\u4ee5\u770b\u51fa\uff0c\u8ddd\u79bb\u4e3a <strong>6<\/strong> \u7684\u8282\u70b9 <code>2<\/code> \u5c31\u662f\u6211\u4eec\u7684\u9009\u62e9\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155534.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155534.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5728\u56fe\u4e2d\u4e3a\u5b83\u52a0\u4e0a\u7ea2\u8272\u8fb9\u6846\uff0c\u5e76\u5c06\u8def\u5f84\u4e0a\u7684\u8fb9\u6807\u8bb0\u4e3a\u7ea2\u8272\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155535.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155535.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5728\u8ddd\u79bb\u5217\u8868\u4e2d\u7528\u7ea2\u8272\u65b9\u5757\u628a\u5b83\u6807\u8bb0\u4e3a\u201c\u5df2\u8bbf\u95ee\u201d\uff0c\u5728\u201c\u672a\u8bbf\u95ee\u201d\u8282\u70b9\u5217\u8868\u4e2d\u628a\u5b83\u5212\u6389\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155536.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155536.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.freecodecamp.org\/news\/content\/images\/2020\/06\/image-100.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/www.freecodecamp.org\/news\/content\/images\/2020\/06\/image-100.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u91cd\u590d\u524d\u9762\u7684\u6b65\u9aa4\uff0c\u5bfb\u627e\u6e90\u8282\u70b9\u5230\u65b0\u7684\u76f8\u90bb\u8282\u70b9\u8282\u70b9 <code>3<\/code> \u7684\u6700\u77ed\u8def\u5f84\u3002<\/p>\n<p>\u53ef\u4ee5\u770b\u5230\uff0c\u6709\u4e24\u79cd\u53ef\u9009\u7684\u8def\u5f84\uff1a<code>0 -&gt; 1 -&gt; 3<\/code> \u6216 <code>0 -&gt; 2 -&gt; 3<\/code>\u3002\u4e00\u8d77\u770b\u770b\u6211\u4eec\u662f\u5982\u4f55\u786e\u5b9a\u6700\u77ed\u8def\u5f84\u7684\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155537.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155537.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u8282\u70b9 <code>3<\/code> \u5728\u4e4b\u524d\u5df2\u7ecf\u6709\u4e86\u4e00\u4e2a\u8ddd\u79bb\u8bb0\u5f55\uff08\u8ddd\u79bb\u4e3a <strong>7<\/strong>\uff0c\u53c2\u9605\u4e0b\u8868\uff09\uff0c\u8fd9\u4e2a\u8ddd\u79bb\u662f\u4e4b\u524d\u6b65\u9aa4\u4e2d\u7531\u8def\u5f84 <code>0 -&gt; 1 -&gt; 3<\/code> \u7684\u4e24\u4e2a\u8fb9\u6743\u91cd\uff08\u5206\u522b\u4e3a 5 \u548c 2\uff09\u76f8\u52a0\u5f97\u5230\u7684\u3002<\/p>\n<p>\u4e0d\u8fc7\u73b0\u5728\u6709\u4e86\u4e00\u4e2a\u65b0\u7684\u53ef\u9009\u8def\u5f84\uff1a<code>0 -&gt; 2 -&gt; 3<\/code>\uff0c\u5b83\u9014\u7ecf\u6743\u91cd\u5206\u522b\u4e3a <strong>6<\/strong> \u548c <strong>8<\/strong> \u7684\u4e24\u6761\u8fb9 <code>0 -&gt; 2<\/code> \u548c <code>2 -&gt; 3<\/code>\uff0c\u603b\u8ddd\u79bb\u4e3a <strong>14<\/strong>\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155539.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155539.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u663e\u7136\uff0c\u7b2c\u4e00\u4e2a\u8def\u5f84\u7684\u8ddd\u79bb\u66f4\u77ed\uff087 vs. 14\uff09\uff0c\u6240\u4ee5\u9009\u62e9\u7b2c\u4e00\u4e2a\u8def\u5f84 <code>0 -&gt; 1 -&gt; 3<\/code>\u3002<strong>\u53ea\u6709\u5728\u65b0\u7684\u8def\u5f84\u8ddd\u79bb\u66f4\u77ed\u7684\u60c5\u51b5\u4e0b\uff0c\u624d\u4f1a\u66f4\u65b0\u8ddd\u79bb\u5217\u8868\u3002<\/strong><\/p>\n<p>\u56e0\u6b64\uff0c\u4f7f\u7528\u7b2c\u4e00\u79cd\u65b9\u6848 <code>0 -&gt; 1 -&gt; 3<\/code>\uff0c\u5c06\u8282\u70b9\u6dfb\u52a0\u5230\u8def\u5f84\u4e2d\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155540.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155540.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u628a\u8fd9\u4e2a\u8282\u70b9\u6807\u8bb0\u4e3a\u201c\u5df2\u8bbf\u95ee\u201d\uff0c\u5728\u201c\u672a\u8bbf\u95ee\u201d\u8282\u70b9\u5217\u8868\u4e2d\u628a\u5b83\u5212\u6389\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155541.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155541.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155542.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155542.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u91cd\u590d\u524d\u9762\u7684\u8fc7\u7a0b\u3002<\/p>\n<p>\u68c0\u67e5\u5c1a\u672a\u8bbf\u95ee\u7684\u76f8\u90bb\u8282\u70b9\uff1a\u8282\u70b9 <code>4<\/code> \u548c\u8282\u70b9 <code>5<\/code>\uff0c\u56e0\u4e3a\u5b83\u4eec\u662f\u8282\u70b9 <code>3<\/code> \u7684\u76f8\u90bb\u8282\u70b9\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155543.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155543.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u66f4\u65b0\u5b83\u4eec\u5230\u6e90\u8282\u70b9\u7684\u8ddd\u79bb\uff0c\u5c1d\u8bd5\u5bfb\u627e\u66f4\u77ed\u7684\u8def\u5f84\uff1a<\/p>\n<ul>\n<li><strong>\u5bf9\u4e8e\u8282\u70b9 <code>4<\/code>\uff1a<\/strong> \u8def\u5f84\u662f <code>0 -&gt; 1 -&gt; 3 -&gt; 4<\/code>\uff0c\u8ddd\u79bb\u4e3a <strong>17<\/strong>\u3002<\/li>\n<li><strong>\u5bf9\u4e8e\u8282\u70b9 <code>5<\/code>\uff1a<\/strong> \u8def\u5f84\u662f <code>0 -&gt; 1 -&gt; 3 -&gt; 5<\/code>\uff0c\u8ddd\u79bb\u4e3a <strong>22<\/strong>\u3002<\/li>\n<\/ul>\n<p><strong>\ud83d\udca1 \u63d0\u793a\uff1a<\/strong> \u6ce8\u610f\u6211\u4eec\u53ea\u80fd\u4ece\u6700\u77ed\u8def\u5f84\uff08\u7ea2\u8272\u8fb9\uff09\u4e0a\u8fdb\u884c\u6269\u5c55\uff0c\u800c\u4e0d\u80fd\u9014\u7ecf\u672a\u88ab\u5305\u542b\u5728\u6700\u77ed\u8def\u5f84\u4e2d\u7684\u8fb9\uff08\u4f8b\u5982\uff0c\u4e0d\u80fd\u6784\u9020\u7ecf\u8fc7\u8fb9 <code>2 -&gt; 3<\/code> \u7684\u8def\u5f84\uff09\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155544.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155544.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u73b0\u5728\u9700\u8981\u9009\u62e9\u5c06\u54ea\u4e2a\u672a\u8bbf\u95ee\u8282\u70b9\u6807\u8bb0\u4e3a\u201c\u5df2\u8bbf\u95ee\u201d\uff0c\u8fd9\u91cc\u9009\u62e9\u8282\u70b9 <code>4<\/code>\uff0c\u56e0\u4e3a\u5728\u8ddd\u79bb\u5217\u8868\u4e2d\u5b83\u7684\u8ddd\u79bb\u6700\u77ed\u3002\u5728\u56fe\u4e2d\u505a\u6807\u8bb0\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155545.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155545.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5728\u8ddd\u79bb\u5217\u8868\u4e2d\u7528\u7ea2\u8272\u65b9\u5757\u5c06\u5b83\u6807\u8bb0\u4e3a\u201c\u5df2\u8bbf\u95ee\u201d\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155546.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155546.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5728\u201c\u672a\u8bbf\u95ee\u201d\u8282\u70b9\u5217\u8868\u4e2d\u628a\u5b83\u5212\u6389\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155547.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155547.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u518d\u6b21\u91cd\u590d\u524d\u9762\u7684\u8fc7\u7a0b\u3002\u68c0\u67e5\u76f8\u90bb\u8282\u70b9\uff1a\u8282\u70b9 <code>5<\/code> \u548c\u8282\u70b9 <code>6<\/code>\u3002\u5206\u6790\u6bcf\u4e00\u79cd\u4ece\u5df2\u8bbf\u95ee\u8282\u70b9\u5230\u5b83\u4eec\u4e4b\u95f4\u7684\u53ef\u80fd\u8def\u5f84\u65b9\u6848\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155548.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155548.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><strong>\u5bf9\u4e8e\u8282\u70b9 <code>5<\/code>\uff1a<\/strong><\/p>\n<ul>\n<li>\u7b2c\u4e00\u79cd\u9009\u62e9\u662f\u8def\u5f84 <code>0 -&gt; 1 -&gt; 3 -&gt; 5<\/code>\uff0c\u5230\u6e90\u8282\u70b9\u7684\u8ddd\u79bb\u4e3a <strong>22<\/strong>\uff082 + 5 + 15\uff09\uff0c\u524d\u9762\u7684\u6b65\u9aa4\u5df2\u7ecf\u8bb0\u5f55\u4e86\u8fd9\u4e2a\u8ddd\u79bb\u3002<\/li>\n<li>\u7b2c\u4e8c\u79cd\u9009\u62e9\u662f\u8def\u5f84 <code>0 -&gt; 1 -&gt; 3 -&gt; 4 -&gt; 5<\/code>\uff0c\u5230\u6e90\u8282\u70b9\u7684\u8ddd\u79bb\u4e3a <strong>23<\/strong>\uff082 + 5 + 10 + 6\uff09\u3002<\/li>\n<\/ul>\n<p>\u663e\u7136\uff0c\u7b2c\u4e00\u4e2a\u8def\u5f84\u8ddd\u79bb\u66f4\u77ed\uff0c\u4e3a\u8282\u70b9 <code>5<\/code> \u9009\u62e9\u7b2c\u4e00\u79cd\u65b9\u6848\u3002<\/p>\n<p><strong>\u5bf9\u4e8e\u8282\u70b9 <code>6<\/code>\uff1a<\/strong><\/p>\n<ul>\n<li>\u53ef\u9009\u7684\u8def\u5f84\u662f <code>0 -&gt; 1 -&gt; 3 -&gt; 4 -&gt; 6<\/code>\uff0c\u5230\u6e90\u8282\u70b9\u7684\u8ddd\u79bb\u4e3a <strong>19<\/strong>\uff082 + 5 + 10 + 2\uff09\u3002<\/li>\n<\/ul>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155549.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155549.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u628a\u8ddd\u79bb\u6700\u77ed\uff08\u5f53\u524d\u5df2\u77e5\uff09\u7684\u8282\u70b9 <code>6<\/code> \u6807\u8bb0\u4e3a\u201c\u5df2\u8bbf\u95ee\u201d\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155550.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155550.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5728\u201c\u672a\u8bbf\u95ee\u201d\u8282\u70b9\u5217\u8868\u4e2d\u628a\u5b83\u5212\u6389\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155551.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155551.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u73b0\u5728\u5f97\u5230\u4e86\u5982\u4e0b\u8def\u5f84\uff08\u6807\u8bb0\u4e3a\u7ea2\u8272\uff09\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155552.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155552.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u73b0\u5728\u53ea\u5269\u4e0b\u4e00\u4e2a\u8282\u70b9 <code>5<\/code> \u8fd8\u6ca1\u88ab\u8bbf\u95ee\u4e86\uff0c\u770b\u770b\u6211\u4eec\u8981\u5982\u4f55\u628a\u5b83\u6dfb\u52a0\u5230\u8def\u5f84\u4e2d\u3002<\/p>\n<p>\u4ece\u5df2\u7ecf\u6dfb\u52a0\u5230\u8def\u5f84\u4e2d\u7684\u8282\u70b9\u51fa\u53d1\uff0c\u6709\u4e09\u79cd\u4e0d\u540c\u7684\u8def\u5f84\u53ef\u4ee5\u8bbf\u95ee\u8282\u70b9 <code>5<\/code>\uff1a<\/p>\n<ul>\n<li><strong>\u7b2c\u4e00\u79cd\u9009\u62e9\uff1a<\/strong> <code>0 -&gt; 1 -&gt; 3 -&gt; 5<\/code>\uff0c\u603b\u8ddd\u79bb\u4e3a <strong>22<\/strong>\uff082 + 5 + 15\uff09\u3002<\/li>\n<li><strong>\u7b2c\u4e8c\u79cd\u9009\u62e9\uff1a<\/strong> <code>0 -&gt; 1 -&gt; 3 -&gt; 4 -&gt; 5<\/code>\uff0c\u603b\u8ddd\u79bb\u4e3a <strong>23<\/strong>\uff082 + 5 + 10 + 6\uff09\u3002<\/li>\n<li><strong>\u7b2c\u4e09\u79cd\u9009\u62e9\uff1a<\/strong> <code>0 -&gt; 1 -&gt; 3 -&gt; 4 -&gt; 6 -&gt; 5<\/code>\uff0c\u603b\u8ddd\u79bb\u4e3a <strong>25<\/strong>\uff082 + 5 + 10 + 2 + 6\uff09\u3002<\/li>\n<\/ul>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155553.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155553.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u9009\u62e9\u603b\u8ddd\u79bb\u4e3a <strong>22<\/strong> \u7684\u6700\u77ed\u8def\u5f84\uff1a<code>0 -&gt; 1 -&gt; 3 -&gt; 5<\/code>\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155554.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155554.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u628a\u8fd9\u4e2a\u8282\u70b9\u6807\u8bb0\u4e3a\u201c\u5df2\u8bbf\u95ee\u201d\uff0c\u5e76\u5728\u201c\u672a\u8bbf\u95ee\u201d\u8282\u70b9\u5217\u8868\u4e2d\u628a\u5b83\u5212\u6389\uff1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155555.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155555.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155556.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155556.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p><strong>\u77a7\uff01<\/strong> \u6211\u4eec\u5f97\u5230\u4e86\u4ece\u8282\u70b9 <code>0<\/code> \u5230\u56fe\u4e2d\u6bcf\u4e2a\u8282\u70b9\u7684\u6700\u77ed\u8def\u5f84\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155557.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155557.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u56fe\u4e2d\uff0c\u6807\u8bb0\u4e3a\u7ea2\u8272\u7684\u8fb9\u8868\u793a\u6700\u77ed\u8def\u5f84\uff1a\u8fde\u63a5\u8282\u70b9 <code>0<\/code> \u548c\u76ee\u6807\u8282\u70b9\u7684\u7ea2\u8272\u8fb9\u5373\u4e3a\u4ece\u6e90\u8282\u70b9\u51fa\u53d1\u8bbf\u95ee\u76ee\u6807\u8282\u70b9\u7684\u6700\u77ed\u8def\u5f84\u3002<\/p>\n<p>\u4f8b\u5982\uff0c\u60f3\u8981\u4ece\u8282\u70b9 <code>0<\/code> \u51fa\u53d1\u8bbf\u95ee\u8282\u70b9 <code>6<\/code>\uff0c\u8fde\u63a5\u5b83\u4eec\u7684\u7ea2\u8272\u8fb9\u5c31\u662f\u6700\u77ed\u8def\u5f84\uff0c\u8ddf\u7740\u8d70\u5c31\u884c\u4e86\u3002<\/p>\n<pre><code class=\"language-java\">package basic_class_06;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map.Entry;\n\/\/ no negative weight\npublic class Code_06_Dijkstra {\n    public static HashMap&lt;Node, Integer&gt; dijkstra1(Node head) {\n        HashMap&lt;Node, Integer&gt; distanceMap = new HashMap&lt;&gt;();\n        distanceMap.put(head, 0);\n        HashSet&lt;Node&gt; selectedNodes = new HashSet&lt;&gt;();\n        Node minNode = getMinDistanceAndUnselectedNode(distanceMap, selectedNodes);\n        while (minNode != null) {\n            int distance = distanceMap.get(minNode);\n            for (Edge edge : minNode.edges) {\n                Node toNode = edge.to;\n                if (!distanceMap.containsKey(toNode)) {\n                    distanceMap.put(toNode, distance + edge.weight);\n                }\n                distanceMap.put(edge.to, Math.min(distanceMap.get(toNode), distance + edge.weight));\n            }\n            selectedNodes.add(minNode);\n            minNode = getMinDistanceAndUnselectedNode(distanceMap, selectedNodes);\n        }\n        return distanceMap;\n    }\n    public static Node getMinDistanceAndUnselectedNode(HashMap&lt;Node, Integer&gt; distanceMap, \n            HashSet&lt;Node&gt; touchedNodes) {\n        Node minNode = null;\n        int minDistance = Integer.MAX_VALUE;\n        for (Entry&lt;Node, Integer&gt; entry : distanceMap.entrySet()) {\n            Node node = entry.getKey();\n            int distance = entry.getValue();\n            if (!touchedNodes.contains(node) &amp;&amp; distance &lt; minDistance) {\n                minNode = node;\n                minDistance = distance;\n            }\n        }\n        return minNode;\n    }\n    public static class NodeRecord {\n        public Node node;\n        public int distance;\n\n        public NodeRecord(Node node, int distance) {\n            this.node = node;\n            this.distance = distance;\n        }\n    }\n    public static class NodeHeap {\n        private Node[] nodes;\n        private HashMap&lt;Node, Integer&gt; heapIndexMap;\n        private HashMap&lt;Node, Integer&gt; distanceMap;\n        private int size;\n\n        public NodeHeap(int size) {\n            nodes = new Node[size];\n            heapIndexMap = new HashMap&lt;&gt;();\n            distanceMap = new HashMap&lt;&gt;();\n            this.size = 0;\n        }\n        public boolean isEmpty() {\n            return size == 0;\n        }\n\n        public void addOrUpdateOrIgnore(Node node, int distance) {\n            if (inHeap(node)) {\n                distanceMap.put(node, Math.min(distanceMap.get(node), distance));\n                insertHeapify(node, heapIndexMap.get(node));\n            }\n            if (!isEntered(node)) {\n                nodes[size] = node;\n                heapIndexMap.put(node, size);\n                distanceMap.put(node, distance);\n                insertHeapify(node, size++);\n            }\n        }\n        public NodeRecord pop() {\n            NodeRecord nodeRecord = new NodeRecord(nodes[0], distanceMap.get(nodes[0]));\n            swap(0, size - 1);\n            heapIndexMap.put(nodes[size - 1], -1);\n            distanceMap.remove(nodes[size - 1]);\n            nodes[size - 1] = null;\n            heapify(0, --size);\n            return nodeRecord;\n        }\n\n        private void insertHeapify(Node node, int index) {\n            while (distanceMap.get(nodes[index]) &lt; distanceMap.get(nodes[(index - 1) \/ 2])) {\n                swap(index, (index - 1) \/ 2);\n                index = (index - 1) \/ 2;\n            }\n        }\n        private void heapify(int index, int size) {\n            int left = index * 2 + 1;\n            while (left &lt; size) {\n                int smallest = left + 1 &lt; size &amp;&amp; distanceMap.get(nodes[left + 1]) &lt; distanceMap.get(nodes[left])\n                        ? left + 1 : left;\n                smallest = distanceMap.get(nodes[smallest]) &lt; distanceMap.get(nodes[index]) ? smallest : index;\n                if (smallest == index) {\n                    break;\n                }\n                swap(smallest, index);\n                index = smallest;\n                left = index * 2 + 1;\n            }\n        }\n        private boolean isEntered(Node node) {\n            return heapIndexMap.containsKey(node);\n        }\n\n        private boolean inHeap(Node node) {\n            return isEntered(node) &amp;&amp; heapIndexMap.get(node) != -1;\n        }\n\n        private void swap(int index1, int index2) {\n            heapIndexMap.put(nodes[index1], index2);\n            heapIndexMap.put(nodes[index2], index1);\n            Node tmp = nodes[index1];\n            nodes[index1] = nodes[index2];\n            nodes[index2] = tmp;\n        }\n    }\n    public static HashMap&lt;Node, Integer&gt; dijkstra2(Node head, int size) {\n        NodeHeap nodeHeap = new NodeHeap(size);\n        nodeHeap.addOrUpdateOrIgnore(head, 0);\n        HashMap&lt;Node, Integer&gt; result = new HashMap&lt;&gt;();\n        while (!nodeHeap.isEmpty()) {\n            NodeRecord record = nodeHeap.pop();\n            Node cur = record.node;\n            int distance = record.distance;\n            for (Edge edge : cur.edges) {\n                nodeHeap.addOrUpdateOrIgnore(edge.to, edge.weight + distance);\n            }\n            result.put(cur, distance);\n        }\n        return result;\n    }\n}<\/code><\/pre>\n<h2>7.\u8be6\u89e3\u524d\u7f00\u6811\u4e0e\u8d2a\u5fc3\u7b97\u6cd5<\/h2>\n<h3>\u524d\u7f00\u6811\uff08Trie\u6811\uff0c\u5b57\u5178\u6811\uff09<\/h3>\n<p><code>\u524d\u7f00\u6811<\/code>\u662f<code>N\u53c9\u6811<\/code>\u7684\u4e00\u79cd\u7279\u6b8a\u5f62\u5f0f\u3002\u901a\u5e38\u6765\u8bf4\uff0c\u4e00\u4e2a\u524d\u7f00\u6811\u662f\u7528\u6765<code>\u5b58\u50a8\u5b57\u7b26\u4e32<\/code>\u7684\u3002\u524d\u7f00\u6811\u7684\u6bcf\u4e00\u4e2a\u8282\u70b9\u4ee3\u8868\u4e00\u4e2a<code>\u5b57\u7b26\u4e32<\/code>\uff08<code>\u524d\u7f00<\/code>\uff09\u3002\u6bcf\u4e00\u4e2a\u8282\u70b9\u4f1a\u6709\u591a\u4e2a\u5b50\u8282\u70b9\uff0c\u901a\u5f80\u4e0d\u540c\u5b50\u8282\u70b9\u7684\u8def\u5f84\u4e0a\u6709\u7740\u4e0d\u540c\u7684\u5b57\u7b26\u3002\u5b50\u8282\u70b9\u4ee3\u8868\u7684\u5b57\u7b26\u4e32\u662f\u7531\u8282\u70b9\u672c\u8eab\u7684<code>\u539f\u59cb\u5b57\u7b26\u4e32<\/code>\uff0c\u4ee5\u53ca<code>\u901a\u5f80\u8be5\u5b50\u8282\u70b9\u8def\u5f84\u4e0a\u6240\u6709\u7684\u5b57\u7b26<\/code>\u7ec4\u6210\u7684\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141500613.png'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205141500613.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom: 67%;\" \/><\/div><\/p>\n<p>\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\u6839\u8282\u70b9\u8868\u793a<code>\u7a7a\u5b57\u7b26\u4e32<\/code>\u3002<\/p>\n<p>\u524d\u7f00\u6811\u7684\u4e00\u4e2a\u91cd\u8981\u7684\u7279\u6027\u662f\uff0c\u8282\u70b9\u6240\u6709\u7684\u540e\u4ee3\u90fd\u4e0e\u8be5\u8282\u70b9\u76f8\u5173\u7684\u5b57\u7b26\u4e32\u6709\u7740\u5171\u540c\u7684\u524d\u7f00\u3002\u8fd9\u5c31\u662f<code>\u524d\u7f00\u6811<\/code>\u540d\u79f0\u7684\u7531\u6765\u3002<\/p>\n<p>\u6211\u4eec\u518d\u6765\u770b\u8fd9\u4e2a\u4f8b\u5b50\u3002\u4f8b\u5982\uff0c\u4ee5\u8282\u70b9 &quot;b&quot; \u4e3a\u6839\u7684\u5b50\u6811\u4e2d\u7684\u8282\u70b9\u8868\u793a\u7684\u5b57\u7b26\u4e32\uff0c\u90fd\u5177\u6709\u5171\u540c\u7684\u524d\u7f00 &quot;b&quot;\u3002\u53cd\u4e4b\u4ea6\u7136\uff0c\u5177\u6709\u516c\u5171\u524d\u7f00 &quot;b&quot; \u7684\u5b57\u7b26\u4e32\uff0c\u5168\u90e8\u4f4d\u4e8e\u4ee5 &quot;b&quot; \u4e3a\u6839\u7684\u5b50\u6811\u4e2d\uff0c\u5e76\u4e14\u5177\u6709\u4e0d\u540c\u524d\u7f00\u7684\u5b57\u7b26\u4e32\u6765\u81ea\u4e0d\u540c\u7684\u5206\u652f\u3002<\/p>\n<p>\u524d\u7f00\u6811\u6709\u7740\u5e7f\u6cdb\u7684\u5e94\u7528\uff0c\u4f8b\u5982\u81ea\u52a8\u8865\u5168\uff0c\u62fc\u5199\u68c0\u67e5\u7b49\u7b49\u3002\u6211\u4eec\u5c06\u5728\u540e\u9762\u7684\u7ae0\u8282\u4e2d\u4ecb\u7ecd\u5b9e\u9645\u5e94\u7528\u573a\u666f\u3002<\/p>\n<h3>\u5982\u4f55\u8868\u793a\u4e00\u4e2a\u524d\u7f00\u6811\uff1f<\/h3>\n<pre><code class=\"language-java\">package class_07;\npublic class Code_01_TrieTree {\n    public static class TrieNode {\n        public int path;\n        public int end;\n        public TrieNode[] nexts;\n        public TrieNode() {\n            path = 0;\n            end = 0;\n            nexts = new TrieNode[26];\n        }\n    }\n    public static class Trie {\n        private TrieNode root;\n\n        public Trie() {\n            root = new TrieNode();\n        }\n\n        public void insert(String word) {\n            if (word == null) {\n                return;\n            }\n            char[] chs = word.toCharArray();\n            TrieNode node = root;\n            int index = 0;\n            for (int i = 0; i &lt; chs.length; i++) {\n                index = chs[i] - &#039;a&#039;;\n                if (node.nexts[index] == null) {\n                    node.nexts[index] = new TrieNode();\n                }\n                node = node.nexts[index];\n                node.path++;\n            }\n            node.end++;\n        }\n        public void delete(String word) {\n            if (search(word) != 0) {\n                char[] chs = word.toCharArray();\n                TrieNode node = root;\n                int index = 0;\n                for (int i = 0; i &lt; chs.length; i++) {\n                    index = chs[i] - &#039;a&#039;;\n                    if (--node.nexts[index].path == 0) {\n                        node.nexts[index] = null;\n                        return;\n                    }\n                    node = node.nexts[index];\n                }\n                node.end--;\n            }\n        }\n        public int search(String word) {\n            if (word == null) {\n                return 0;\n            }\n            char[] chs = word.toCharArray();\n            TrieNode node = root;\n            int index = 0;\n            for (int i = 0; i &lt; chs.length; i++) {\n                index = chs[i] - &#039;a&#039;;\n                if (node.nexts[index] == null) {\n                    return 0;\n                }\n                node = node.nexts[index];\n            }\n            return node.end;\n        }\n        public int prefixNumber(String pre) {\n            if (pre == null) {\n                return 0;\n            }\n            char[] chs = pre.toCharArray();\n            TrieNode node = root;\n            int index = 0;\n            for (int i = 0; i &lt; chs.length; i++) {\n                index = chs[i] - &#039;a&#039;;\n                if (node.nexts[index] == null) {\n                    return 0;\n                }\n                node = node.nexts[index];\n            }\n            return node.path;\n        }\n    }<\/code><\/pre>\n<h3>\u8d2a\u5fc3\u7b97\u6cd5<\/h3>\n<p>\u8d2a\u5fc3\u7b97\u6cd5\uff08\u53c8\u79f0\u8d2a\u5a6a\u7b97\u6cd5\uff09\u662f\u6307\uff0c\u5728\u5bf9\u95ee\u9898\u6c42\u89e3\u65f6\uff0c\u603b\u662f\u505a\u51fa\u5728\u5f53\u524d\u770b\u6765\u662f\u6700\u597d\u7684\u9009\u62e9\u3002<\/p>\n<p>\u4e5f\u5c31\u662f\u8bf4\uff0c\u4e0d\u4ece\u6574\u4f53\u6700\u4f18\u4e0a\u52a0\u4ee5\u8003\u8651\uff0c\u4ed6\u6240\u505a\u51fa\u7684\u662f\u5728\u67d0\u79cd\u610f\u4e49\u4e0a\u7684\u5c40\u90e8\u6700\u4f18\u89e3\u3002<\/p>\n<p>\u8d2a\u5fc3\u7b97\u6cd5\u4e0d\u662f\u5bf9\u6240\u6709\u95ee\u9898\u90fd\u80fd\u5f97\u5230\u6574\u4f53\u6700\u4f18\u89e3\uff0c\u5173\u952e\u662f\u8d2a\u5fc3\u7b56\u7565\u7684\u9009\u62e9\uff0c\u9009\u62e9\u7684<strong>\u8d2a\u5fc3\u7b56\u7565\u5fc5\u987b\u5177\u5907\u65e0\u540e\u6548\u6027\uff0c\u5373\u67d0\u4e2a\u72b6\u6001\u4ee5\u524d\u7684\u8fc7\u7a0b\u4e0d\u4f1a\u5f71\u54cd\u4ee5\u540e\u7684\u72b6\u6001\uff0c\u53ea\u4e0e\u5f53\u524d\u72b6\u6001\u6709\u5173\u3002<\/strong><\/p>\n<p>\u6240\u505a\u51fa\u7684\u662f\u67d0\u79cd\u610f\u4e49\u4e0a\u7684\u5c40\u90e8\u6700\u4f18<\/p>\n<pre><code class=\"language-java\">package basic_class_07;\nimport java.util.Arrays;\nimport java.util.Comparator;\npublic class Code_06_BestArrange {\n    public static class Program {\n        public int start;\n        public int end;\n        public Program(int start, int end) {\n            this.start = start;\n            this.end = end;\n        }\n    }\n    public static class ProgramComparator implements Comparator&lt;Program&gt; {\n\n        @Override\n        public int compare(Program o1, Program o2) {\n            return o1.end - o2.end;\n        }\n    }\n    public static int bestArrange(Program[] programs, int start) {\n        Arrays.sort(programs, new ProgramComparator());\n        int result = 0;\n        for (int i = 0; i &lt; programs.length; i++) {\n            if (start &lt;= programs[i].start) {\n                result++;\n                start = programs[i].end;\n            }\n        }\n        return result;\n    }\n    public static void main(String[] args) {\n    }\n}\n\u4f60\u81ea\u5df1\u60f3\u51fa\u8d2a\u5fc3\u7b56\u7565\uff0c\u4f46\u53ea\u80fd\u611f\u89c9\u5b83\u5bf9\u4e0d\u5bf9\uff0c\u7406\u8bba\u8bc1\u660e\u653e\u5f03\u5427\uff01\u91cd\u70b9\u5728\u4e8e\u60f3\u5f88\u591a\u7684\u8d2a\u5fc3\u7b56\u7565\uff0c\u7528\u5bf9\u6570\u5668\u53bb\u8bc1\u660e\u5bf9\u4e0d\u5bf9\u3002<\/code><\/pre>\n<ul>\n<li>\n<p>\u6240\u8c13\u8d2a\u5fc3\u7b97\u6cd5\u662f\u6307\uff0c\u5728\u5bf9\u95ee\u9898\u6c42\u89e3\u65f6\uff0c\u603b\u662f\u505a\u51fa\u5728\u5f53\u524d\u770b\u6765\u662f\u6700\u597d\u7684\u9009\u62e9(\u6700\u5c0f\uff0c\u6700\u5927\uff0c\u6700\u4f18\u7b49\u7b49)\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u4e0d\u4ece\u6574\u4f53\u6700\u4f18\u4e0a\u52a0\u4ee5\u8003\u8651\uff0c\u5b83\u6240\u505a\u51fa\u7684\u4ec5\u662f\u5728\u67d0\u79cd\u610f\u4e49\u4e0a\u7684\u5c40\u90e8\u6700\u4f18\u89e3\u3002<\/p>\n<\/li>\n<li>\n<p>\u8d2a\u5fc3\u7b56\u7565\u9002\u7528\u7684\u524d\u63d0\u662f\uff1a\u5c40\u90e8\u6700\u4f18\u7b56\u7565\u80fd\u5bfc\u81f4\u4ea7\u751f\u5168\u5c40\u6700\u4f18\u89e3\u3002 \u3010\u4e0d\u8981\u53bb\u7406\u8bba\u8bc1\u660e\u4f60\u9009\u62e9\u7684\u8d2a\u5fc3\u7b56\u7565\u7684\u6b63\u786e\u6027\uff0c\u56e0\u4e3a\u592a\u590d\u6742\uff0c\u4f60\u6700\u597d\u76f4\u63a5\u770b\u7ed3\u679c\u5bf9\u4e0d\u5bf9\u5c31\u597d\u3011<\/p>\n<\/li>\n<li>\n<p>\u8d2a\u5fc3\u7b97\u6cd5\u7684\u57fa\u672c\u601d\u8def\uff1a<br \/>\n1\u3001\u5efa\u7acb\u6570\u5b66\u6a21\u578b\u6765\u63cf\u8ff0\u95ee\u9898\uff1b<br \/>\n2\u3001\u628a\u6c42\u89e3\u7684\u95ee\u9898\u5206\u6210\u82e5\u5e72\u4e2a\u5b50\u95ee\u9898\uff1b<br \/>\n3\u3001\u5bf9\u6bcf\u4e00\u5b50\u95ee\u9898\u6c42\u89e3\uff0c\u5f97\u5230\u5b50\u95ee\u9898\u7684\u5c40\u90e8\u6700\u4f18\u89e3\uff1b<\/p>\n<p>4\u3001\u628a\u5b50\u95ee\u9898\u7684\u89e3\u5c40\u90e8\u6700\u4f18\u89e3\u5408\u6210\u539f\u6765\u89e3\u95ee\u9898\u7684\u4e00\u4e2a\u89e3<\/p>\n<\/li>\n<\/ul>\n<h3>\u9898\u76ee1\uff1a\u6309\u6700\u4f4e\u5b57\u5178\u5e8f\u62fc\u63a5\u5b57\u7b26\u4e32<\/h3>\n<pre><code>\u9898\u76ee\uff1a\u7ed9\u5b9a\u4e00\u4e2a\u5b57\u7b26\u4e32\u7c7b\u578b\u7684\u6570\u7ec4strs\uff0c\u627e\u5230\u4e00\u79cd\u62fc\u63a5\u65b9\u5f0f\uff0c\u4f7f\u5f97\u628a\u6240\u6709\u5b57\u7b26\u4e32\u62fc\u8d77\u6765\u4e4b\u540e\u5f62\u6210\u7684\u5b57\u7b26\u4e32\u5177\u6709\u6700\u4f4e\u7684\u5b57\u5178\u5e8f\u3002\n\u5b57\u5178\u5e8f\uff1a\u5bf9\u4e8e\u4e24\u4e2a\u5b57\u7b26\u4e32\n\u957f\u5ea6\u4e0d\u4e00\u6837\uff0c\u5c06\u77ed\u7684\u4e2a\u88650\uff080\u662f\u6700\u5c0fASCII\u7801\u503c\uff09\uff0c\u8865\u6210\u957f\u5ea6\u4e00\u6837\uff1b\n\u5148\u6309\u9996\u5b57\u7b26\u6392\u5e8f\uff0c\u5982\u679c\u9996\u5b57\u7b26\u76f8\u540c\uff0c\u518d\u6309\u7b2c\u4e8c\u4e2a\u5b57\u7b26\u6392\u5e8f\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002\u5982aa,ab,ba,bb,bc\u5c31\u662f\u4e00\u4e2a\u5b57\u5178\u5e8f\uff0c\u4ece\u5c0f\u5230\u5927\u3002<\/code><\/pre>\n<p>\u3010\u5206\u6790\u3011\u8d2a\u5fc3\uff1a\u4f60\u5b9a\u4e00\u4e2a\u6307\u6807\uff0c\u6309\u8fd9\u4e2a\u6307\u6807\u6765\uff0c\u5bf9\u6bcf\u4e2a\u6837\u672c\u5206\u51fa\u4e2a\u4f18\u5148\uff0c\u4f18\u5148\u7ea7\u5927\u7684\u5148\u5904\u7406\uff0c\u4f18\u5148\u7ea7\u5c0f\u7684\u540e\u5904\u7406\u3002<br \/>\n\u672c\u9898\u7684\u8d2a\u5fc3\u7b56\u7565\u5c31\u662f\u4f60\u9009\u62e9\u7684\u6bd4\u8f83\u7b56\u7565<br \/>\nstr1.str2 &lt;= str2.str1\uff0c\u5219 str1 \u653e\u524d\u9762\uff0c\u5426\u5219 str2 \u653e\u524d\u9762\u3010\u6839\u636e\u4e24\u4e2a\u5b57\u7b26\u4e32\u62fc\u63a5\u7684\u7ed3\u679c\u7684\u5927\u5c0f\u6765\u51b3\u5b9a\u6392\u5e8f\u3011\uff0c\u4e0d\u80fd\u76f4\u63a5\u6839\u636estr1\u548cstr2\u7684\u5927\u5c0f\u6bd4\u8f83\u51b3\u5b9a\u4f4d\u7f6e\u6392\u653e\uff0c\u6bd4\u5982\uff1ab\u548cba\uff0c\u6700\u5c0f\u7684\u5b57\u5178\u5e8f\u5e94\u8be5\u662fbab\u800c\u4e0d\u662fbba\u3002<\/p>\n<pre><code class=\"language-java\">package com.offer.foundation.class5;\nimport java.util.Arrays;\nimport java.util.Comparator;\n\npublic class Lowest {\n    \/\/ \u81ea\u5b9a\u4e49\u6bd4\u8f83\u5668\uff1a\u7ed9\u5b57\u7b26\u4e32\u6309\u7167\u81ea\u5b9a\u4e49\u7684\u89c4\u5219\u6392\u5e8f\n    public class MyComparator implements Comparator&lt;String&gt; {\n        @Override\n        public int compare(String a, String b) {\n            return (a + b).compareTo(b + a);   \/\/ \u54ea\u4e2a\u5c0f\u54ea\u4e2a\u653e\u524d\u9762\n        }\n    }\n    public String getLowestString(String[] strs){\n        if(strs == null || strs.length == 0){\n            return &quot;&quot;;\n        }\n        \/\/ \u7ed9\u5b57\u7b26\u4e32\u6570\u7ec4\u6309\u7167\u81ea\u5df1\u5b9a\u4e49\u7684\u89c4\u5219\u6392\u5e8f\n        \/\/ \u5bf9\u4e8e\u5236\u5b9a\u7684\u8d2a\u5fc3\u7b56\u7565\uff0c\u5148\u76f4\u89c2\u5206\u6790\u4e0b\u5bf9\u4e0d\u5bf9\uff0c\u4e0d\u8981\u53bb\u8bd5\u56fe\u8bc1\u660e\uff0c\u53ef\u4ee5\u4f7f\u7528\u5bf9\u6570\u5668\u8bc1\u660e\n        Arrays.sort(strs, new MyComparator());\n        String res = &quot;&quot;;\n        for (String str : strs) {\n            res += str;\n        }\n        return res;\n    }\n    \/\/ \u6d4b\u8bd5\n    public static void main(String[] args) {\n        Lowest lowest = new Lowest();\n        String[] str = {&quot;ba&quot;, &quot;b&quot;,&quot;baa&quot;};  \/\/ baabab\n        System.out.println(lowest.getLowestString(str));\n    }\n}<\/code><\/pre>\n<h3>\u9898\u76ee2\uff1a\u5207\u5206\u91d1\u6761\u603b\u4ee3\u4ef7\u6700\u5c0f<\/h3>\n<pre><code>\u9898\u76ee\uff1a\u4e00\u5757\u91d1\u6761\u5207\u6210\u4e24\u534a\uff0c\u662f\u9700\u8981\u82b1\u8d39\u548c\u957f\u5ea6\u6570\u503c\u4e00\u6837\u7684\u94dc\u677f\u7684\u3002\u6bd4\u5982\uff1a\u957f\u5ea6\u4e3a20\u7684\u91d1\u6761\uff0c\u4e0d\u7ba1\u5207\u6210\u957f\u5ea6\u591a\u5927\u7684\u4e24\u534a\uff0c\u90fd\u8981\u82b1\u8d3920\u4e2a\u94dc\u677f\u3002\u4e00\u7fa4\u4eba\u60f3\u6574\u5206\u6574\u5757\u91d1\u6761\uff0c\u600e\u4e48\u5206\u6700\u7701\u94dc\u677f\uff1f\n\u4f8b\u5982\uff1a\u7ed9\u5b9a\u6570\u7ec4{10, 20, 30}\uff0c\u4ee3\u8868\u4e00\u5171\u4e09\u4e2a\u4eba\uff0c\u6574\u5757\u91d1\u6761\u957f\u5ea6\u4e3a 10+20+30=60. \u91d1\u6761\u8981\u5206\u621010, 20, 30\u4e09\u4e2a\u90e8\u5206\u3002 \u5982\u679c\uff0c \u5148\u628a\u957f\u5ea660\u7684\u91d1\u6761\u5206\u621010\u548c50\uff0c\u82b1\u8d3960\uff0c\u518d\u628a\u957f\u5ea650\u7684\u91d1\u6761\u5206\u621020\u548c30\uff0c\u82b1\u8d3950\uff0c\u4e00\u5171\u82b1\u8d39110\u94dc\u677f\u3002\n\u4f46\u662f\u5982\u679c\u5148\u628a\u957f\u5ea660\u7684\u91d1\u6761\u5206\u621030\u548c30\uff0c\u82b1\u8d3960\uff0c\u518d\u628a\u957f\u5ea630\u91d1\u6761\u5206\u621010\u548c20\uff0c\u82b1\u8d3930 \u4e00\u5171\u82b1\u8d3990\u94dc\u677f\u3002\n\u8f93\u5165\u4e00\u4e2a\u6570\u7ec4\uff0c\u8fd4\u56de\u5206\u5272\u7684\u6700\u5c0f\u4ee3\u4ef7\u3002<\/code><\/pre>\n<p>\u3010\u5206\u6790\u3011\uff1a\u8d2a\u5fc3\uff1a\u6bcf\u6b21\u5408\u5e76\u4ee3\u4ef7\u6700\u5c0f\u7684\uff0c\u8bbe\u603b\u4ee3\u4ef7\u4e3a cost = 0<br \/>\n1\uff09\u628a\u6570\u7ec4\u7684\u5143\u7d20\u653e\u5165\u4f18\u5148\u961f\u5217\uff08\u5c0f\u6839\u5806\uff09\u4e2d\uff1b<br \/>\n2\uff09\u6bcf\u6b21\u5f39\u51fa\u6700\u5c0f\u7684\u4e24\u4e2a\u6570\u3010\u4f7f\u5176\u4ee3\u4ef7\u6700\u5c0f\uff0c\u56e0\u4e3a\u8d2a\u5fc3\u7b97\u6cd5\u5c31\u662f\u5c40\u90e8\u6700\u4f18\u3011\uff0c\u7136\u540e\u76f8\u52a0\u7684\u7ed3\u679c\u4e3a c\uff0c\u603b\u4ee3\u4ef7\u52a0\u4e0a c\uff0c\u5e76\u4e14\u5c06 c \u653e\u5165\u5806\u4e2d\uff1b<br \/>\n3\uff09\u91cd\u590d1\uff09\u30012\uff09\u6b65\u9aa4\uff0c\u76f4\u5230\u5806\u4e2d\u53ea\u5269\u6709\u4e00\u4e2a\u6570\u7ed3\u675f\u3002<br \/>\n\u3010<code>\u6ce8\u610f<\/code>\u3011\uff1a \u4f18\u5148\u961f\u5217\u662f\u5c0f\u6839\u5806\uff0c\u4f60\u8ba4\u4e3a\u8c01\u8be5\u5728\u524d\u9762\uff0c\u5c31\u901a\u8fc7\u6bd4\u8f83\u5668\u628a\u5b83\u7684\u4f18\u5148\u7ea7\u8bbe\u5c0f\u3010\u5e76\u4e0d\u662f\u5b9e\u9645\u6570\u503c\u5c0f\u5c31\u5728\u524d\u9762\uff0c\u4e5f\u53ef\u80fd\u5b9e\u9645\u6570\u503c\u5927\u5728\u524d\u9762\uff0c\u770b\u4f60\u6bd4\u8f83\u5668\u600e\u4e48\u5f04\u4e86\uff0c\u8fd4\u56de\u8d1f\u6570\uff1a\u8868\u793ao1\u5c0f\u4e8eo2\u3011<br \/>\n\u6807\u51c6\u7684\u970d\u592b\u66fc\u7f16\u7801\u95ee\u9898\uff1a\u5148\u9009\u4e24\u4e2a\u6700\u5c0f\u7684\u5408\u5e76\uff0c\u7136\u540e\u518d\u5f80\u4e0a\u5408\u5e76\uff08\u5982\u4e0b\u56fe\u6240\u793a\uff09\u3002\u5408\u5e76\u662f\u4ece\u4e0b\u5f80\u4e0a\uff0c\u5207\u5272\u7684\u662f\u4ece\u4e0a\u5f80\u4e0b\uff1a\u5148\u5c0660\u5207\u621030\u300130\uff0c\u518d\u5c06\u5176\u4e2d\u4e00\u4e2a30\u5207\u621010\u300120\uff0c\u6700\u540e\u5c31\u5c0660\u5207\u6210\uff1a10\u300120\u300130<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20190330113854629.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Bjd2wxMjA2,size_16,color_FFFFFF,t_70'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20190330113854629.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Bjd2wxMjA2,size_16,color_FFFFFF,t_70\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom: 67%;\" \/><\/div><\/p>\n<p><code>\u8865\u5145<\/code>\uff1a<strong>\u5806\u7ed3\u6784\u7684\u6269\u5c55\u4e0e\u5e94\u7528**<\/strong>\u3010\u7ecf\u5e38\u7528\u4e8e\u8d2a\u5fc3\u3011\uff1a**<\/p>\n<p><strong>\u5806\uff1a\u7528\u4e8e\u5728\u4e00\u7fa4\u6570\u636e\u4e2d\u62ff\u51fa\u6700\u597d\u7684\u90a3\u4e2a\uff08\u6839\u636e\u81ea\u5b9a\u4e49\u7684\u6bd4\u8f83\u5668\u4e0d\u540c\u5b9e\u73b0\u4e0d\u540c\u7684\u5806\uff0c\u6bd4\u8f83\u5668\u5c31\u662f\u8d2a\u5fc3\u7684\u6807\u51c6\uff09\uff0c\u9ed8\u8ba4\u5efa\u7684\u662f\u5c0f\u6839\u5806\uff08\u4f18\u5148\u7ea7\u5c0f\u7684\u653e\u524d\u9762\uff09\u3002<\/strong><\/p>\n<pre><code class=\"language-java\">package com.offer.foundation.class5;\nimport java.util.Comparator;\nimport java.util.PriorityQueue;\npublic class LowestCost {\n    \/\/ \u6700\u5c0f\u5806\n    public class MyComparator implements Comparator&lt;Integer&gt;{\n        @Override\n        public int compare(Integer o1, Integer o2) {\n            return o1 - o2;   \/\/ \u8c01\u5c0f\u628a\u8c01\u653e\u5728\u524d\u9762: -\u8868\u793ao1\u5c0f\n        }\n    }\n    \/\/ \u8f93\u5165\u7684\u662f\u4e00\u4e2a\u6570\u7ec4\uff0c\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u5219\u662f\u6700\u7ec8\u7684\u5207\u5272\u65b9\u5f0f\uff0c\u73b0\u5728\u8981\u627e\u51fa\u8fd9\u79cd\u65b9\u5f0f\u9700\u8981\u82b1\u8d39\u7684\u6700\u5c0f\u4ee3\u4ef7\n    public int lowestCost(int[] arr){\n        \/\/ \u4f18\u5148\u7ea7\u961f\u5217\u662f\u5c0f\u6839\u5806\uff0c\u8c01\u5728\u524d\u9762\uff0c\u5c31\u628a\u8c01\u7684\u4f18\u5148\u7ea7\u8bbe\u7f6e\u5c0f\u70b9\n        PriorityQueue&lt;Integer&gt; pq = new PriorityQueue&lt;&gt;(new MyComparator());\n        for (int i : arr) {\n            pq.add(i);\n        }\n        int costTotal = 0;   \/\/ \u603b\u7684\u4ee3\u4ef7\n        int costOne = 0;     \/\/ \u4e24\u6570\u5408\u5e76\u7684\u4ee3\u4ef7\n        \/\/ \u7b49\u4e8e1\u7684\u65f6\u5019\uff0c\u8bf4\u660e\u5806\u91cc\u9762\u53ea\u6709\u4e00\u4e2a\u5143\u7d20\u4e86\uff0c\u5373\u5df2\u7ecf\u5408\u5e76\u5b8c\u6210\n        while(pq.size() &gt; 1){\n            costOne = pq.poll() + pq.poll();   \/\/ \u5408\u5e76\u5806\u91cc\u9762\u6700\u5c0f\u7684\u4e24\u4e2a\u5143\u7d20\n            costTotal += costOne;              \/\/ \u4e24\u5c0f\u6570\u5408\u5e76\u7684\u7ed3\u679c\n            pq.add(costOne);                 \/\/ \u5c06\u4e24\u5c0f\u6570\u5408\u5e76\u7684\u7ed3\u679c\u91cd\u65b0\u6dfb\u52a0\u5230\u5806\u91cc\n        }\n        return costTotal;\n    }\n    \/\/ \u6d4b\u8bd5\n    public static void main(String[] args) {\n        LowestCost lc = new LowestCost();\n        int[] arr = {10, 20, 30, 40};\n        int res = lc.lowestCost(arr);\n        System.out.println(res);      \/\/ 190 = 10 + 20 + 30 + 30 + 40 + 60\n    }\n}<\/code><\/pre>\n<p>\u4ee5\u540e\u9047\u5230\u7c7b\u4f3c\u7684\u95ee\u9898\uff0c\u53ef\u4ee5\u8003\u8651\u4e0b\u662f\u5426\u80fd\u591f\u7528\u970d\u592b\u66fc\u7f16\u7801\u7684\u601d\u60f3\u53bb\u89e3\u51b3\u3002<\/p>\n<h3>\u9898\u76ee3\uff1a\u6700\u591a\u505a K \u4e2a\u9879\u76ee\u7684\u6700\u5927\u5229\u6da6<\/h3>\n<pre><code>\u9898\u76ee\uff1acosts[]\uff1a\u82b1\u8d39 \uff0ccosts[i] \u8868\u793a i \u53f7\u9879\u76ee\u7684\u82b1\u8d39 profits[]\uff1a\u5229\u6da6\uff0c profits[i] \u8868\u793a i \u53f7\u9879\u76ee\u5728\u6263\u9664\u82b1\u8d39\u4e4b\u540e\u8fd8\u80fd\u6323\u5230\u7684\u94b1(\u5229\u6da6)\u3002\u4e00\u6b21\u53ea\u80fd\u505a\u4e00\u4e2a\u9879\u76ee\uff0c\u6700\u591a\u505a k \u4e2a\u9879\u76ee\uff0cm \u8868\u793a\u4f60\u521d\u59cb\u7684\u8d44\u91d1\u3002\uff08\u8bf4\u660e\uff1a\u4f60\u6bcf\u505a\u5b8c\u4e00\u4e2a\u9879\u76ee\uff0c\u9a6c\u4e0a\u83b7\u5f97\u7684\u6536\u76ca\uff0c\u53ef\u4ee5\u652f\u6301\u4f60\u53bb\u505a\u4e0b\u4e00\u4e2a\u9879\u76ee\uff09\u6c42\u4f60\u6700\u540e\u83b7\u5f97\u7684\u6700\u5927\u94b1\u6570\u3002<\/code><\/pre>\n<ul>\n<li>\u3010\u5206\u6790\u3011\u8d2a\u5fc3\uff1a\u6bcf\u6b21\u603b\u662f\u505a\u80fd\u591f\u505a\u7684\u9879\u76ee\u4e2d\u5229\u6da6\u6700\u5927\u7684\u3002<\/li>\n<li>\u51c6\u5907\u4e00\u4e2a\u5c0f\u6839\u5806\u548c\u5927\u6839\u5806\uff0c\u5c0f\u6839\u5806\u653e\u7740\u5168\u90e8\u7684\u9879\u76ee\uff0c\u6309\u8c01\u82b1\u8d39\uff08\u6210\u672c\uff09\u6700\u4f4e\u5c31\u5728\u5934\u90e8\u3002<\/li>\n<li>1\u3001\u82e5\u5c0f\u6839\u5806\u4e0d\u4e3a\u7a7a\uff0c\u9879\u76ee\u4e5f\u6ca1\u505a\u5b8c K \u4e2a\uff0c\u5219\u6bcf\u6b21\u5148\u4ece\u5c0f\u6839\u5806\u89e3\u9501\u80fd\u591f\u505a\u7684\u9879\u76ee\uff0c\u653e\u5165\u5927\u6839\u5806\uff08\u5927\u6839\u5806\u6309\u7167\u89e3\u9501\u7684\u9879\u76ee\u4e2d\u8c01\u7684\u5229\u6da6\u6700\u5927\u653e\u5728\u5934\u90e8\uff09\uff1b<\/li>\n<li>2\u3001\u5927\u6839\u5806\u4e0d\u4e3a\u7a7a\uff0c\u4ece\u5927\u6839\u5806\u5f39\u51fa\u5806\u9876\u9879\u76ee\u6765\u505a\uff08\u5373\u5229\u6da6\u6700\u5927\u7684\u9879\u76ee\uff0c\u6bcf\u6b21\u53ea\u5f39\u51fa\u5806\u9876\u4e00\u4e2a\u9879\u76ee\u6765\u505a\uff09\uff1b<\/li>\n<li>3\u3001\u628a m \u52a0\u4e0a\u5229\u6da6\uff0c\u521d\u59cb\u8d44\u91d1\u589e\u52a0\uff0c\u518d\u91cd\u590d1)\u30012\uff09\u6b65\u9aa4\u3002<\/li>\n<\/ul>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20190330191357818.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Bjd2wxMjA2,size_16,color_FFFFFF,t_70'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20190330191357818.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Bjd2wxMjA2,size_16,color_FFFFFF,t_70\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" style=\"zoom:80%;\" \/><\/div><\/p>\n<p>\u6ce8\u610f\uff1a<\/p>\n<ol>\n<li>\u89e3\u9501\u9879\u76ee\uff1a\u53ea\u8981\u9879\u76ee\u6210\u672c\u5728\u5f53\u524d\u8d44\u91d1\u8303\u56f4\u4ee5\u5185\u90fd\u53ef\u4ee5\u88ab\u89e3\u9501\uff0c\u5e76\u4e0d\u662f\u4e00\u6b21\u53ea\u80fd\u89e3\u9501\u4e00\u4e2a\uff0c\u7136\u540e\u6309\u7167\u5229\u6da6\u7684\u5927\u5c0f\u653e\u8fdb\u5927\u6839\u5806\u91cc\uff0c\u7136\u540e\u6309\u7167\u5229\u6da6\u5927\u7684\u5148\u505a\u3002\u6240\u8c13\u89e3\u9501\u9879\u76ee\u5176\u5b9e\u5c31\u662f\u8d44\u91d1\u80af\u5b9a\u5927\u4e8e\u9879\u76ee\u6210\u672c\uff0c\u8be5\u9879\u76ee\u4e00\u5b9a\u53ef\u4ee5\u88ab\u505a\u7684\uff0c\u53ef\u4ee5\u76f4\u89c2\u7684\u611f\u53d7\u4e0b\uff1b<\/li>\n<li>\u7ed3\u675f\u6761\u4ef6\uff1a\u53ef\u80fd\u505a\u4e0d\u5230k\u4e2a\u9879\u76ee\u5c31\u4f1a\u505c\u4e86\uff0c\u56e0\u4e3a\u53ef\u80fd\u5b58\u5728\u6210\u672c\u6bd4\u8f83\u9ad8\u7684\u9879\u76ee\uff0c\u5927\u6839\u5806\u4e2d\u53ef\u505a\u7684\u9879\u76ee\u90fd\u505a\u5b8c\u4e86\uff0c\u603b\u8d44\u91d1\u8fd8\u662f\u65e0\u6cd5\u89e3\u9501\u6210\u672c\u6bd4\u8f83\u5927\u7684\u9879\u76ee\uff0c\u5fc5\u987b\u8981\u505c\u6b62\u4e86\u3002<\/li>\n<\/ol>\n<pre><code class=\"language-java\">package com.offer.foundation.class5;\nimport java.util.Comparator;\nimport java.util.PriorityQueue;\n\/**\n * @author pengcheng\n * @date 2019\/3\/30 - 20:07\n * @content: \u8d2a\u5fc3\u7b97\u6cd5\uff1a\u505a\u591a\u505ak\u4e2a\u9879\u76ee\u7684\u6700\u5927\u5229\u6da6\n *\/\npublic class IPO {\n    \/\/ \u9879\u76ee\u8282\u70b9\n    public class Node{\n        private int profit;    \/\/ \u9879\u76ee\u5229\u6da6\n        private int cost;      \/\/ \u9879\u76ee\u6210\u672c\n\n        public Node(int profit, int cost){\n            this.profit = profit;\n            this.cost = cost;\n        }\n    }\n    \/**\n     * @param k \uff1a\u6700\u591a\u505ak\u4e2a\u9879\u76ee\n     * @param fund \uff1a\u603b\u7684\u8d44\u91d1\n     * @param profits \uff1a\u6bcf\u4e2a\u9879\u76ee\u7684\u5229\u6da6\u6570\u7ec4\n     * @param cost \uff1a\u6bcf\u4e2a\u9879\u76ee\u7684\u6210\u672c\u6570\u7ec4\n     * @return\n     *\/\n    public int findMaxCapital(int k, int fund, int[] profits, int[] cost){\n        \/\/ \u521d\u59cb\u5316\u6bcf\u4e2a\u9879\u76ee\u8282\u70b9\u4fe1\u606f\n        Node[] nodes = new Node[profits.length];\n        for (int i = 0; i &lt; profits.length; i++) {\n            nodes[i] = new Node(profits[i], cost[i]);\n        }\n        \/\/ \u4f18\u5148\u7ea7\u961f\u5217\u662f\u8c01\u5c0f\u8c01\u653e\u5728\u524d\u9762\uff0c\u6bd4\u8f83\u5668\u51b3\u5b9a\u8c01\u5c0f\n        PriorityQueue&lt;Node&gt; minCostQ = new PriorityQueue&lt;&gt;(new MinCostComparator());       \/\/ \u6210\u672c\u5c0f\u9876\u5806\n        PriorityQueue&lt;Node&gt; maxProfitQ = new PriorityQueue&lt;&gt;(new MaxProfitComparator());   \/\/ \u5229\u6da6\u5927\u9876\u5806\n        for (int i = 0; i &lt; nodes.length; i++) {\n            minCostQ.add(nodes[i]);   \/\/ \u5c06\u6240\u6709\u7684\u9879\u76ee\u63d2\u5165\u6210\u672c\u5806\u4e2d\n        }\n        \/\/ \u5f00\u59cb\u89e3\u9501\u9879\u76ee\uff0c\u8d5a\u53d6\u5229\u6da6\n        for (int i = 0; i &lt; k; i++) {\n            \/\/ \u89e3\u9501\u9879\u76ee\u7684\u524d\u63d0\u6761\u4ef6\uff1a\u6210\u672c\u5806\u4e2d\u8fd8\u6709\u9879\u76ee\u672a\u88ab\u89e3\u9501\u5e76\u4e14\u8be5\u9879\u76ee\u7684\u6210\u672c\u5c0f\u4e8e\u5f53\u524d\u7684\u603b\u8d44\u91d1\n            while(!minCostQ.isEmpty() &amp;&amp; minCostQ.peek().cost &lt;= fund){\n                maxProfitQ.add(minCostQ.poll());   \/\/ \u5c06\u5f53\u524d\u6210\u672c\u6700\u5c0f\u7684\u9879\u76ee\u89e3\u9501\n            }\n            if(maxProfitQ.isEmpty()){\n                \/\/ \u5982\u679cmaxProfitQ\u4e3a\u7a7a\uff0c\u5219\u8bf4\u660e\u6ca1\u6709\u5f53\u524d\u8d44\u91d1\u80fd\u591f\u89e3\u9501\u7684\u65b0\u9879\u76ee\u4e86\uff0c\u4e4b\u524d\u89e3\u9501\u7684\u9879\u76ee\u4e5f\u505a\u5b8c\u4e86\uff0c\u5373\u65e0\u9879\u76ee\u53ef\u505a\u4e86\n                return fund;   \/\/ \u6700\u540e\u7684\u603b\u91d1\u989d\n            }\n            fund += maxProfitQ.poll().profit;   \/\/ \u505a\u5229\u6da6\u6700\u5927\u7684\u9879\u76ee\n        }\n        return fund;   \/\/ k\u4e2a\u9879\u76ee\u90fd\u505a\u5b8c\u4e86\n    }\n    \/\/ \u6210\u672c\u5c0f\u9876\u5806\uff1a\u6210\u672c\u6700\u5c0f\u7684\u5728\u5806\u9876\n    public class MinCostComparator implements Comparator&lt;Node&gt;{\n        @Override\n        public int compare(Node o1, Node o2) {\n            return o1.cost - o2.cost;\n        }\n    }\n    \/\/ \u5229\u6da6\u5927\u9876\u5806\uff1a\u5229\u6da6\u6700\u5927\u7684\u5728\u5806\u9876\n    public class MaxProfitComparator implements Comparator&lt;Node&gt;{\n        @Override\n        public int compare(Node o1, Node o2) {\n            return o2.profit - o1.profit;\n        }\n    }\n}<\/code><\/pre>\n<h3>\u9898\u76ee4\uff1aN\u7687\u540e\u95ee\u9898<\/h3>\n<p>n \u7687\u540e\u95ee\u9898 \u7814\u7a76\u7684\u662f\u5982\u4f55\u5c06 n \u4e2a\u7687\u540e\u653e\u7f6e\u5728 n\u00d7n \u7684\u68cb\u76d8\u4e0a\uff0c\u5e76\u4e14\u4f7f\u7687\u540e\u5f7c\u6b64\u4e4b\u95f4\u4e0d\u80fd\u76f8\u4e92\u653b\u51fb\u3002<\/p>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570 n \uff0c\u8fd4\u56de\u6240\u6709\u4e0d\u540c\u7684 n \u7687\u540e\u95ee\u9898 \u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155558.jpg'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic-for-be.oss-cn-hangzhou.aliyuncs.com\/img\/202205140155558.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code class=\"language-java\">package class23;\n\npublic class Code03_NQueens {\n\n    public static int num1(int n) {\n        if (n &lt; 1) {\n            return 0;\n        }\n        int[] record = new int[n];\n        return process1(0, record, n);\n    }\n\n    \/\/ \u5f53\u524d\u6765\u5230i\u884c\uff0c\u4e00\u5171\u662f0~N-1\u884c\n    \/\/ \u5728i\u884c\u4e0a\u653e\u7687\u540e\uff0c\u6240\u6709\u5217\u90fd\u5c1d\u8bd5\n    \/\/ \u5fc5\u987b\u8981\u4fdd\u8bc1\u8ddf\u4e4b\u524d\u6240\u6709\u7684\u7687\u540e\u4e0d\u6253\u67b6\n    \/\/ int[] record record[x] = y \u4e4b\u524d\u7684\u7b2cx\u884c\u7684\u7687\u540e\uff0c\u653e\u5728\u4e86y\u5217\u4e0a\n    \/\/ \u8fd4\u56de\uff1a\u4e0d\u5173\u5fc3i\u4ee5\u4e0a\u53d1\u751f\u4e86\u4ec0\u4e48\uff0ci.... \u540e\u7eed\u6709\u591a\u5c11\u5408\u6cd5\u7684\u65b9\u6cd5\u6570\n    public static int process1(int i, int[] record, int n) {\n        if (i == n) {\n            return 1;\n        }\n        int res = 0;\n        \/\/ i\u884c\u7684\u7687\u540e\uff0c\u653e\u54ea\u4e00\u5217\u5462\uff1fj\u5217\uff0c\n        for (int j = 0; j &lt; n; j++) {\n            if (isValid(record, i, j)) {\n                record[i] = j;\n                res += process1(i + 1, record, n);\n            }\n        }\n        return res;\n    }\n\n    public static boolean isValid(int[] record, int i, int j) {\n        \/\/ 0..i-1\n        for (int k = 0; k &lt; i; k++) {\n            if (j == record[k] || Math.abs(record[k] - j) == Math.abs(i - k)) {\n                return false;\n            }\n        }\n        return true;\n    }<\/code><\/pre>\n<p><code>\u5e38\u6570\u4f18\u5316\uff1a\u5229\u7528\u4f4d\u8fd0\u7b97\u52a0\u901f<\/code><\/p>\n<pre><code class=\"language-java\">\/\/ \u8bf7\u4e0d\u8981\u8d85\u8fc732\u7687\u540e\u95ee\u9898\npublic static int num2(int n) {\n    if (n &lt; 1 || n &gt; 32) {\n        return 0;\n    }\n    \/\/ \u5982\u679c\u4f60\u662f13\u7687\u540e\u95ee\u9898\uff0climit \u6700\u53f313\u4e2a1\uff0c\u5176\u4ed6\u90fd\u662f0\n    int limit = n == 32 ? -1 : (1 &lt;&lt; n) - 1;\n    return process2(limit, 0, 0, 0);\n}\n\n\/\/ 7\u7687\u540e\u95ee\u9898\n\/\/ limit : 0....0 1 1 1 1 1 1 1\n\/\/ \u4e4b\u524d\u7687\u540e\u7684\u5217\u5f71\u54cd\uff1acolLim\n\/\/ \u4e4b\u524d\u7687\u540e\u7684\u5de6\u4e0b\u5bf9\u89d2\u7ebf\u5f71\u54cd\uff1aleftDiaLim\n\/\/ \u4e4b\u524d\u7687\u540e\u7684\u53f3\u4e0b\u5bf9\u89d2\u7ebf\u5f71\u54cd\uff1arightDiaLim\npublic static int process2(int limit, int colLim, int leftDiaLim, int rightDiaLim) {\n    if (colLim == limit) {\n        return 1;\n    }\n    \/\/ pos\u4e2d\u6240\u6709\u662f1\u7684\u4f4d\u7f6e\uff0c\u662f\u4f60\u53ef\u4ee5\u53bb\u5c1d\u8bd5\u7687\u540e\u7684\u4f4d\u7f6e\n    int pos = limit &amp; (~(colLim | leftDiaLim | rightDiaLim));\n    int mostRightOne = 0;\n    int res = 0;\n    while (pos != 0) {\n        mostRightOne = pos &amp; (~pos + 1);\n        pos = pos - mostRightOne;\n        res += process2(limit,\n                        colLim | mostRightOne, \n                        (leftDiaLim | mostRightOne) &lt;&lt; 1,\n                        (rightDiaLim | mostRightOne) &gt;&gt;&gt; 1);\n    }\n    return res;\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 1.\u65f6\u95f4\u590d\u6742\u5ea6\u4e0e\u6392\u5e8f \u65f6\u95f4\u590d\u6742\u5ea6\uff1a\u53ea\u53d6\u7cfb\u6570\u6700\u9ad8\u9879\uff0c\u4e14\u5ffd\u7565\u6700\u9ad8\u9879\u7cfb\u6570\u5269\u4e0b\u7684\u3002 $an_2+bn+ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":130,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,25],"tags":[],"class_list":["post-99","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-acm","category-25"],"_links":{"self":[{"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/posts\/99","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/comments?post=99"}],"version-history":[{"count":3,"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/posts\/99\/revisions"}],"predecessor-version":[{"id":102,"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/posts\/99\/revisions\/102"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/media\/130"}],"wp:attachment":[{"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/media?parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/categories?post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/162.14.82.114\/index.php\/wp-json\/wp\/v2\/tags?post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}