{"id":1434,"date":"2020-03-09T22:22:20","date_gmt":"2020-03-09T14:22:20","guid":{"rendered":"http:\/\/bloo.heing.fun\/?p=1434"},"modified":"2020-03-09T22:22:20","modified_gmt":"2020-03-09T14:22:20","slug":"%e5%89%91%e6%8c%87offer%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/bloo.heing.fun\/?p=1434","title":{"rendered":"\u5251\u6307offer\u5b66\u4e60\u7b14\u8bb0"},"content":{"rendered":"<p># \u5251\u6307offer<br \/>\n## 1. \u9762\u8bd5\u7684\u6d41\u7a0b<br \/>\n### 1.1 \u9762\u8bd5\u5b98\u8c08\u9762\u8bd5<br \/>\n### 1.2 \u9762\u8bd5\u76843\u79cd\u5f62\u5f0f<br \/>\n#### 1.2.1 \u7535\u8bdd\u9762\u8bd5<br \/>\n#### 1.2.2 \u5171\u4eab\u684c\u9762\u8fdc\u7a0b\u9762\u8bd5<br \/>\n#### 1.2.3 \u73b0\u573a\u9762\u8bd5<br \/>\n### 1.3 \u9762\u8bd5\u76843\u4e2a\u73af\u8282<br \/>\n#### 1.3.1 \u884c\u4e3a\u9762\u8bd5\u73af\u8282<br \/>\n##### 1 \u9879\u76ee\u7ecf\u9a8c<br \/>\n##### 2 \u5e94\u8058\u8005\u6280\u80fd<br \/>\n###### \u6280\u80fd\u638c\u63e1\u7a0b\u5ea6<br \/>\n* \u4e86\u89e3<br \/>\n\t* \u4ec5 \u4e0a\u8fc7\u8bfe\/\u770b\u8fc7\u4e66\uff0c \u59b9\u505a\u8fc7\u5b9e\u9645\u9879\u76ee<br \/>\n\t* \u4e0d\u5217\u51fa\u80a4\u6d45\u7684\u4e86\u89e3\u7684\u6280\u80fd\uff0c\u9664\u975e\u804c\u4f4d\u7684\u786e\u9700\u8981<br \/>\n* \u719f\u6089<br \/>\n\t* \u5b9e\u9645\u9879\u76ee\u4e2d\u4f7f\u7528\u67d0\u9879\u6280\u672f\u8f83\u957f\u65f6\u95f4\uff0c\u901a\u8fc7\u67e5\u9605\u6587\u6863\u53ef\u4ee5\u89e3\u51b3\u5927\u90e8\u5206\u95ee\u9898<br \/>\n\t* \u5df2\u7ecf\u5de5\u4f5c\u8fc7 \/ \u9879\u76ee\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u6240\u7528\u5230\u7684\u6280\u80fd \uff0c\u53ef\u7528\u719f\u6089<br \/>\n* \u7cbe\u901a<br \/>\n\t* \u4f7f\u7528\u5f97\u5fc3\u5e94\u624b<br \/>\n\t* \u9879\u76ee\u5f00\u53d1\u4e2d\uff0c \u522b\u4eba\u8bf7\u6559\u8fd9\u4e2a\u9886\u57df\u7684\u95ee\u9898\u65f6\uff0c\u6709\u4fe1\u5fc3\u6709\u80fd\u529b\u89e3\u51b3<br \/>\n\t* \u80fd\u8f7b\u677e\u5730\u56de\u7b54\u8fd9\u4e2a\u9886\u57df\u91cc\u7edd\u5927\u591a\u6570\u95ee\u9898  <\/p>\n<p>##### 3 \u4e3a\u5565\u8df3\u69fd<br \/>\n* \u4e0d\u62b1\u6028\uff0c \u4e0d\u6d41\u9732\u8d1f\u9762\u60c5\u7eea<\/p>\n<p>###### \u907f\u514d\u4ee5\u4e0b<br \/>\n* \u8001\u677f\u82db\u523b<br \/>\n* \u540c\u4e8b\u96be\u76f8\u5904<br \/>\n* \u52a0\u73ed\u9891\u7e41<br \/>\n* \u5de5\u8d44\u4f4e<\/p>\n<p>#### 1.3.2 \u6280\u672f\u9762\u8bd5\u73af\u8282<br \/>\n* \u57fa\u7840\u624e\u5b9e<br \/>\n* \u4ee3\u7801\u8d28\u91cf\u9ad8<br \/>\n* \u5206\u6790\u95ee\u9898\u601d\u8def\u6e05\u6670<br \/>\n* \u4f18\u5316\u65f6\u7a7a\u6548\u7387<br \/>\n* \u5b66\u4e60\u6c9f\u901a\u7b49\u80fd\u529b<\/p>\n<p>##### 1 \u57fa\u7840\u624e\u5b9e<br \/>\n* \u7f16\u7a0b\u8bed\u8a00<br \/>\n* \u6570\u636e\u7ed3\u6784<br \/>\n\t* \u94fe\u8868\uff08\u5e38\u95ee\uff09\uff1a \u63d2\u5165 \u5220\u9664<br \/>\n\t* \u4e8c\u53c9\u6811\uff08\u5e38\u95ee\uff09 \uff1a\u904d\u5386\uff08<-\u5faa\u73af\/\u9012\u5f52\uff09\n* \u67e5\u627e \u6392\u5e8f \n\t* \u4e8c\u5206\u67e5\u627e\n\t* \u5f52\u5e76\u6392\u5e8f\/\u5feb\u901f\u6392\u5e8f\n* \u52a8\u89c4 \u8d2a\u5fc3\n\n##### 2 \u9ad8\u8d28\u91cf\u4ee3\u7801\n* \u8003\u8651\u5168\u9762\n\t* \u8fb9\u754c\u6761\u4ef6 \n\t* \u7279\u6b8a\u8f93\u5165\n* \u9c81\u68d2\u6027\n\n##### 3 \u601d\u8def\u6e05\u6670\n###### \u65b9\u6cd5\n* \u4e3e\u7b80\u5355\u4f8b\u5b50\u4ee5\u4fbf\u81ea\u5df1\u7406\u89e3\u95ee\u9898\n* \u6570\u636e\u7ed3\u6784\u7b80\u5316\u9898\u76ee\n* \u5206\u6cbb\/\u52a8\u6001\u89c4\u5212\n\n##### 4 \u4f18\u5316\u6548\u7387\u7684\u80fd\u529b\n* <- \u5404\u79cd\u6570\u636e\u7ed3\u6784\u7684\u4f18\u7f3a\u70b9\n* \u719f\u7ec3\u638c\u63e1\u5e38\u7528\u7b97\u6cd5\n\n##### 5 \u4f18\u79c0\u7684\u7efc\u5408\u80fd\u529b\n* \u6c9f\u901a\n* \u5408\u4f5c\n\n###### \u5b66\u4e60\u80fd\u529b\u68c0\u6d4b\n* \u95ee\u6700\u8fd1\u5b66\u5565\n* \u5b66\u4e60\u65b0\u6982\u5ff5\n\n###### \u77e5\u8bc6\u8fc1\u79fb\u80fd\u529b\n* \u67d0\u9898\u548c\u5176\u4e0a\u4e00\u9898\u6709\u5173\u8fd9\u79cd\n\n###### \u62bd\u8c61\u5efa\u6a21\/\u53d1\u6563\u601d\u7ef4\n* \u62bd\u8c61\u5efa\u6a21 -> \u7528\u6570\u636e\u7ed3\u6784\u8868\u793a<\/p>\n<p>#### 1.3.3 \u5e94\u8058\u8005\u63d0\u95ee<br \/>\n* <- \u9762\u8bd5\u5b98\u60f3\u4e86\u89e3\u5e94\u8058\u8005\u6700\u5173\u5fc3\u7684\u95ee\u9898\n* -> \u8981\u95ee1~2\uff0c\u4e0d\u7136\u663e\u5f97\u6ca1\u5174\u8da3<br \/>\n\t* \u89c6\u9762\u8bd5\u5b98\u804c\u52a1<br \/>\n\t* \u4e0d\u95ee\u85aa\u6c34\uff0c\u6b64\u548chr\u8c08<br \/>\n\t* \u4e0d\u95ee\u9762\u8bd5\u7ed3\u679c<br \/>\n\t\t* <- \u767d\u95ee\n\t\t* <- \u663e\u5f97\u65e0\u81ea\u6211\u8bc4\u4f30\u80fd\u529b\n\t* \u4e0e\u5e94\u8058 \u804c\u4f4d\/\u9879\u76ee \u76f8\u5173\u95ee\u9898\n\t\t* <- \u4e0a\u7f51\u641c\u7d22\u516c\u53f8\u5927\u6982\u505a\u5565\n\t\t* <- \u9762\u8bd5\u5b98\u8bf4\u8fc7\u7684\u9879\u76ee\n\n## 2. \u9762\u8bd5\u9700\u8981\u7684\u57fa\u7840\u77e5\u8bc6\n### 2.1 \u9762\u8bd5\u5b98\u8c08\u57fa\u7840\u77e5\u8bc6\n* \u9648\u9ece\u660e\n\t* os\u7406\u89e3\u7a0b\u5ea6\n\t* \u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00\u7684\u638c\u63e1\u7a0b\u5ea6\u3002\u4e0a\u624b\u65b0\u7684\u5feb\uff0c\u7406\u89e3\u6df1 \n\t* \u5e38\u7528\u7684\u7b97\u6cd5\u548c\u6570\u636e\u7ed3\u6784\u3002\u4e0d\u4e86\u89e3\u7684\u7a0b\u5e8f\u5458\u57fa\u672c\u53ea\u80fd\u5199\u5199'hello world'\n\n### 2.2 \u7f16\u7a0b\u8bed\u8a00\n###### \u8003\u6838\u65b9\u5f0f\n* \u76f4\u63a5\u95ee\u8bed\u6cd5\n* \u5199\u4ee3\u7801\u89e3\u51b3\u95ee\u9898\n\n###### \u8bed\u8a00\u7c7b\u522b\n* c <- \u5e95\u5c42\u5f00\u53d1\uff08\u5982\u9a71\u52a8)\n* c++ <- linux\n* c# <- windows\n* java <- \u8de8\u5e73\u53f0\n* object c <- ios\n* perl, python <- \u811a\u672c\u8bed\u8a00\n\n#### 2.2.1 c++\n* \u90fd\u8981\u638c\u63e1\n\n##### 1 \u6982\u5ff5\u7406\u89e3\n* c\u8279\u5173\u952e\u5b57\u7406\u89e3\u7a0b\u5ea6\n\t* sizeof\n\n\t```\n    \/\/ \u5b9e\u4f8b\u5fc5\u987b\u8981\u5360\u7528\u7a7a\u95f4\n    sizeof(struct none{}) = 1 <- visual studio\n    \n    \/\/ \u6784\u9020\u6790\u6784\u51fd\u6570\uff0c\u53ea\u9700\u77e5\u51fd\u6570\u5730\u5740\u5373\u53ef &#038;&#038; \u65e0\u5173\u4e8e\u5b9e\u4f8b\n    sizeof(stuct none{\u53ea\u6709 \u6784\u9020\/\u6790\u6784\u51fd\u6570}) = 1\n    \n    sizeof(struct none{\u6709\u4e2a\u865a\u51fd\u6570}) = 4 <-32bit \n    sizeof(struct none{\u6709\u4e2a\u865a\u51fd\u6570}) = 8 \/\/ 64\u4f4d\u673a\u5668\u4e0a\u6307\u9488\u957f8byte\n    ```\n    \n##### 2 \u8111\u4e2d\u8fd0\u884c\n* \u590d\u5236\u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\uff0c\u53ea\u80fd\u662f \u5e38\u91cf\u5f15\u7528\n\t* \u4e0d\u5f15\u7528\u7684\u8bdd\uff0c\u5c31\u4f1a\u65e0\u9650\u8c03\u7528\u590d\u5236\u6784\u9020\u51fd\u6570\n\n##### 3 \u5b9e\u73b0 \u7c7b\/\u6210\u5458\u51fd\u6570\n* c\u8279\n\t* \u300aeffective c++\u300b\u9002\u5408\u7a81\u51fb\n\t\t* \u5217\u4e3e\u4e86c\u8279\u5e38\u89c1\u95ee\u9898\u53ca\u89e3\u51b3\u6280\u5de7\n\t\t* \u63d0\u7684\u95ee\u9898\u5e38\u8003  \n\t* \u300ac++ primer\u300b\u5168\u9762\u4e86\u89e3\n\t* \u300a\u6df1\u5ea6\u63a2\u7d22c\u8279\u5bf9\u8c61\u6a21\u578b\u300b \n\t\t* \u7406\u89e3c\u8279\u96be\u9898\n\t* \u300aThe c\u8279 programming language\u300b \u5168\u9762\u6df1\u5165\u638c\u63e1\n\n###### eg1 \n* c\u8279\u57fa\u7840\u8bed\u6cd5\n* \u5185\u5b58\u6cc4\u6f0f\u7684\u7406\u89e3\n* \u5f02\u5e38\u5b89\u5168\u539f\u5219\n\t* \u7533\u8bf7\u5185\u5b58\u5206\u914d\u5931\u8d25\u540e\uff0c\u4e0d\u6539\u53d8\u539f\u5148\u7684\n\n```\n; eg1 \u8d4b\u503c\u8fd0\u7b97\u7b26\u51fd\u6570\n\n```\n\n#### 2.2.2  c sharp\n* \u5e38\u8003\u4e0ec\u8279\u533a\u522b\n\t* struct &#038;&#038; class \n        * c\u8279\u4e2dstruct\u548cclass\u533a\u522b\n            * struct\u4e2d \u6210\u5458\u53d8\u91cf&#038;&#038;\u6210\u5458\u51fd\u6570 \u9ed8\u8ba4\u8bbf\u95ee\u6743\u9650\u4e3apublic  \n        * c#\u4e2d\n            * \u6210\u5458\u53d8\u91cf&#038;&#038;\u6210\u5458\u51fd\u6570 \u5728 struct\u548cclass\u4e2d \u9ed8\u8ba4\u4e3aprivate\n            * struct\u5b9a\u4e49\u503c\u7c7b\u578b\uff0c\u5728\u6808\u4e0a\u5206\u914d\n            * class\u5b9a\u4e49\u5f15\u7528\u7c7b\u578b\uff0c\u5728\u5806\u4e0a\u5206\u914d \n    * c#\u4e2dFinalizer\u65b9\u6cd5(<- \u8fd0\u884c\u65f6\u5783\u573e\u56de\u6536\u8c03\u7528), Dispose\u65b9\u6cd5\u91ca\u653e\u8d44\u6e90 \n    * c#\u53ef\u6709 \u9759\u6001\u6784\u9020\u51fd\u6570\n    \t* \u7b2c\u4e00\u6b21\u4f7f\u7528\u524d \u8c03\u7528\u4e00\u6b21\n    * c#\u7279\u6709\u529f\u80fd\n    \t* \u53cd\u5c04\n    \t* \u5e94\u7528\u7a0b\u5e8f\u57df\n    \t* \u5176\u5b83   \n   \t\t \n* \u4e66\n\t* \u300aProfessional c#\u300b\n\t\t* \u9644\u5f55\u4ecb\u7ecd\u533a\u522b\n\t* \u300aCLR via c#\u300b\n\t\t* c#\n\t\t* clr\n\t\t* .net\n\t\t* \u88c5\u7bb1\u5378\u7bb1\n\t\t* \u5783\u573e\u56de\u6536\n\t\t* \u53cd\u5c04\n\t\t* \u5176\u5b83\n\n###### eg2 \u5b9e\u73b0singleton\u6a21\u5f0f\n* c#\u57fa\u7840\u8bed\u6cd5\n* \u5355\u4f8b\u6a21\u5f0f\n* \u80fd\u591a\u7ebf\u7a0b\u8fd0\u884c\uff08\u52a0\u9501\n\n### 2.3 \u6570\u636e\u7ed3\u6784\n* \u662f\u9762\u8bd5\u8003\u5bdf\u7684\u91cd\u70b9\n* \u4e3b\u8981\u8003\u5bdf\n\t* \u6570\u7ec4\n\t\t* \u8fde\u7eed\u5185\u5b58\u5b58\u6570\u5b57\n\t* \u5b57\u7b26\u4e32\n\t\t* \u8fde\u7eed\u5185\u5b58\u5b58\u5b57\u7b26 \n\t* \u94fe\u8868\uff08\u6700\u9ad8\u9891\u7387\n\t\t* \u9c81\u68d2\u6027 \n\t* \u6811\uff08\u6700\u9ad8\u9891\u7387\n\t* \u6808\n\t\t* \u9012\u5f52\u76f8\u5173 \n\t\t* \u6df1\u5165\u7406\u89e3\u5e2e\u4f4f\u89e3\u51b3\u5f88\u591a\u7b97\u6cd5\u95ee\u9898\n\t* \u961f\u5217 \n\t\t* bfs \n\t\t* \u6df1\u5165\u7406\u89e3\u5e2e\u4f4f\u89e3\u51b3\u5f88\u591a\u7b97\u6cd5\u95ee\u9898\n\n#### 2.3.1 \u6570\u7ec4\n* \u7b80\u5355\n* \u5185\u5b58\u8fde\u7eed\uff0c\u987a\u5e8f\u5b58\u50a8\n\t* -> \u65f6\u95f4\u6548\u7387\u9ad8 -> \u5b9e\u73b0\u54c8\u5e0c\u8868 -> \u5feb\u67e5<br \/>\n* \u9884\u5206\u914d -> \u7a7a\u95f4\u6548\u7387\u4f4e<br \/>\n\t* <- vector \n\t\t* \u6bcf\u6b21\u6269\u5bb9\u65f6\uff0c\u65b0\u5bb9\u91cf = 2 * \u4e4b\u524d\u7684\u5bb9\u91cf\n\t\t* \u65e7\u6570\u7ec4\u590d\u5236\u5230\u65b0\u6570\u7ec4\uff0c\u91ca\u653e\u4e4b\u524d\u7684\u5185\u5b58\n\n###### c\u8279\n* sizeof\n\t* sizeof(\u6570\u7ec4) = \u6570\u7ec4\u5927\u5c0f\n\t* sizeof(\u6307\u9488) = 4 <- 32bit\n* \u6570\u7ec4\u4f5c\u4e3a\u53c2\u6570\u65f6\uff0c\u6570\u7ec4\u9000\u5316\u6307\u9488 \n\n###### eg3 \u6570\u7ec4\u4e2d\u91cd\u590d\u7684\u6570\u5b57\n* \u626b\u63cf\u6392\u5e8f\u540e\u7684\n* \u54c8\u5e0c\u8868\n* \u65f6O(1), \u7a7aO(1)\n\n```\n\n```\n\n#### 2.3.2 \u5b57\u7b26\u4e32\n* \u9891\u7387\u9ad8\n\t* <- \u4f18\u5316 <- \u7279\u6b8a\u89c4\u5b9a\n\n###### c\/c\u8279\/csharp\u5b57\u7b26\u4e32\u7279\u6027\n* c\/c\u8279\n\t* \u4ee5 '\\0' \u7ed3\u5c3e\n\t\t* \u6ce8\u610f\u8d8a\u754c\n\t* \u5e38\u91cf\u5b57\u7b26\u4e32 \u5728\u5355\u72ec\u7684\u5185\u5b58\u533a\u57df\n* csharep\n\t* System.String\n\t\t* <- \u4e0d\u53ef\u6539\u53d8    \n\t* StringBuilder\n\t\t* \u53ef\u6539  \n\n#### 2.3.3 \u94fe\u8868\n* \u9762\u8bd5\u4e2d\u4f7f\u7528\u6700\u9891\u7e41\n\t* \u7ed3\u6784\u7b80\u5355\n\t* \u64cd\u4f5c\u4ee3\u7801\u91cf\u5c11\n\t\t* \u54c8\u5e0c\u8868\u3001\u6709\u5411\u56fe\u7b49\u590d\u6742\u6570\u636e\u7ed3\u6784\uff0c\u4e00\u4e2a\u64cd\u4f5c\u4ee3\u7801\u91cf\u5927 -> \u51e0\u5341\u5206\u949f\u7684\u9762\u8bd5\u5f88\u96be\u5b8c\u6210<br \/>\n\t* \u662f\u52a8\u6001\u6570\u636e\u7ed3\u6784\uff0c\u9700\u8981\u6307\u9488\u64cd\u4f5c<br \/>\n\t\t* \u9700\u8f83\u597d\u7f16\u7a0b\u529f\u5e95<br \/>\n\t* \u7075\u6d3b<br \/>\n\t\t* \u9898\u53ef\u4ee5\u6709\u6311\u6218\u6027<\/p>\n<p>#### 2.3.4 \u6811<br \/>\n* \u6d89\u53ca\u5927\u91cf\u6307\u9488<br \/>\n\t* \u8003\u5bdf\u6307\u9488\u529b<br \/>\n* \u5927\u591a\u4e8c\u53c9\u6811<br \/>\n\t* \u904d\u5386\u6700\u91cd\u8981<\/p>\n<p>###### \u904d\u5386<br \/>\n* \u904d\u5386\u65b9\u5f0f<br \/>\n\t* \u524d\u5e8f<br \/>\n\t* \u4e2d\u5e8f<br \/>\n\t* \u540e\u5e8f<br \/>\n\t\t* \u4e0a\u4e09\u79cd\u90fd\u53ef \u9012\u5f52 \/ \u5faa\u73af<br \/>\n\t* \u5c42\u6b21<br \/>\n\t\t* \u7528\u961f\u5217   <\/p>\n<p>* \u524d\u5e8f\u904d\u5386<\/p>\n<p>&#8220;`<br \/>\n\/\/ \u9012\u5f52\u904d\u5386<br \/>\nprivate void preorder(List<Integer> l, TreeNode node) {<br \/>\n    if (node == null) return;<br \/>\n    l.add(node.val);<br \/>\n    if (node.left != null)<br \/>\n        preorder(l, node.left);<br \/>\n    if (node.right != null)<br \/>\n        preorder(l, node.right);<br \/>\n}<\/p>\n<p>\/\/ \u975e\u9012\u5f52\u904d\u5386<br \/>\nStack<TreeNode> s = new Stack<TreeNode>();<br \/>\ns.push(root);<br \/>\nwhile (!s.empty()) {<br \/>\n    TreeNode n = s.pop();<br \/>\n    l.add(n.val);<br \/>\n    if (n.right != null) {<br \/>\n        s.push(n.right);<br \/>\n    }<br \/>\n    if (n.left != null) {<br \/>\n        s.push(n.left);<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u4e2d\u5e8f\u904d\u5386<\/p>\n<p>&#8220;`<br \/>\n\/\/ \u9012\u5f52<br \/>\nprivate void inorder(List<Integer> l, TreeNode n) {<br \/>\n    if (n.left != null)<br \/>\n        inorder(l, n.left);<br \/>\n    l.add(n.val);<br \/>\n    if (n.right != null)<br \/>\n        inorder(l, n.right);<br \/>\n}<\/p>\n<p>\/\/ \u975e\u9012\u5f52<br \/>\nStack<TreeNode> s = new Stack<TreeNode>();<br \/>\nTreeNode p = root;<br \/>\nwhile (!(p==null &#038;&#038; s.empty())) {<br \/>\n    while (p != null) { \/\/\u6765\u5230\u6700\u5de6\u8fb9<br \/>\n        s.push(p);<br \/>\n        p = p.left;<br \/>\n    }<br \/>\n    if (!s.empty()) {<br \/>\n    \t\/\/ \u8fd9\u6b65\u8fd0\u884c\u4e4b\u540e\u5373\u662f\u5230\u8fbe\u6700\u5de6\u8fb9\u7684\u53f6\u5b50\u8282\u70b9<br \/>\n        p = s.pop(); \/\/ p\u5206\u4e3a\u662f\u5426\u662f\u53f6\u5b50\u3002\u662f\u53f6\u5b50\u5219\u7a0b\u5e8f\u7ee7\u7eed\u8fd0\u884c\u518d\u6b21\u6765\u5230\u8fd9\u91cc\u904d\u5386\u7236\u8282\u70b9(\u8fd9\u6b65\u4e4b\u540e\u7684\u7a0b\u5e8f\u5219\u662f\u4ece\u5de6\u5b50\u8282\u70b9\u5230\u7236\u8282\u70b9)\uff0c\u4e0d\u662f\u53f6\u5b50(\u6709\u53f3\u8282\u70b9)\u5219\u904d\u5386\u53f3\u5b50\u8282\u70b9\u6811<br \/>\n        l.add(p.val);<br \/>\n        p = p.right;<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u540e\u5e8f\u904d\u5386<\/p>\n<p>&#8220;`<\/p>\n<p>\/\/ \u975e\u9012\u5f52<br \/>\nStack<TreeNode> s = new Stack<TreeNode>();<br \/>\nTreeNode p = root, vis = null;<br \/>\nwhile (!(p == null &#038;&#038; s.empty())) {<br \/>\n    while (p != null) {<br \/>\n        s.push(p);<br \/>\n        p = p.left;<br \/>\n    }<br \/>\n    if (!s.empty()) {<br \/>\n        p = s.peek();<br \/>\n        if (p.right != null &#038;&#038; vis != p.right) {<br \/>\n                p = p.right;<br \/>\n        } else {<br \/>\n            p = s.pop();<br \/>\n            l.add(p.val);<br \/>\n            vis = p;<br \/>\n            p = null;<br \/>\n        }<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u5c42\u6b21\u904d\u5386<\/p>\n<p>&#8220;`<br \/>\npublic List<List<Integer>> levelOrder(TreeNode root) {<br \/>\n    List<List<Integer>> l = new ArrayList<>();<br \/>\n    if (root == null) return l;<br \/>\n    Queue<TreeNode> q = new LinkedList<TreeNode>();<br \/>\n    q.offer(root);<br \/>\n    int level = 0;<br \/>\n    while (!q.isEmpty()) {<br \/>\n        l.add(new ArrayList<Integer>());<br \/>\n        int levelLength = q.size();<br \/>\n        while ((levelLength&#8211;) > 0) {<br \/>\n            TreeNode n = q.poll();<br \/>\n            l.get(level).add(n.val);<\/p>\n<p>            if (n.left != null) {<br \/>\n                q.offer(n.left);<br \/>\n            }<br \/>\n            if (n.right != null) {<br \/>\n                q.offer(n.right);<br \/>\n            }<br \/>\n        }<br \/>\n        ++level;<br \/>\n    }<\/p>\n<p>    return l;<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u6df1\u5ea6<\/p>\n<p>&#8220;`<br \/>\n\/\/ \u9012\u5f52<br \/>\npublic int maxDepth(TreeNode root) {<br \/>\n    if (root == null) return 0;<br \/>\n    return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u5e38\u76f4\u63a5\/\u95f4\u63a5\u88ab\u8003\u5bdf<br \/>\n* \u6709\u5f88\u591a\u7279\u4f8b<br \/>\n\t* \u4e8c\u53c9\u641c\u7d22\u6811<br \/>\n\t* \u5806<br \/>\n\t\t* \u6700\u5927\u5806<br \/>\n\t\t* \u6700\u5c0f\u5806<br \/>\n\t* \u7ea2\u9ed1\u6811<br \/>\n\t\t* \u8282\u70b9\u5206 \u7ea2\u9ed1\u4e8c\u8272<br \/>\n\t\t* \u6839\u8282\u70b9to\u53f6\u8282\u70b9 \u7684\u6700\u957f\u8def\u5f84 \u300a= 2x\u6700\u77ed\u8def<br \/>\n\t\t* c\u8279 stl\u4e4b(multi)set, (multi)map\u7b49\u57fa\u4e8e\u6b64\u5b9e\u73b0 <\/p>\n<p>#### 2.3.5 \u6808\u548c\u961f\u5217<br \/>\n###### \u6808<br \/>\n* \u8ba1\u7b97\u673a\u4e2d\u5e38\u89c1<br \/>\n\t* \u5982\u7ebf\u7a0b\u6808\u5b58\u50a8 \u51fd\u6570\u8c03\u7528\u7684\u53c2\u6570\u8fd4\u56de\u5730\u5740\u4e34\u65f6\u53d8\u91cf\u7b49<br \/>\n* \u540e\u8fdb\u5148\u51fa<br \/>\n* \u5e38\u4e0d\u8003\u8651\u6392\u5e8f<br \/>\n\t* \u4e00\u822cO(n)\u5bfbmin\/max<\/p>\n<p>###### \u961f\u5217<br \/>\n* \u5148\u8fdb\u5148\u51fa<\/p>\n<p>* \u6808 \u961f\u5217 \u76f8\u4e92\u8054\u7cfb<br \/>\n\t* \u4e24\u4e2a\u6808 => \u961f\u5217<br \/>\n\t* \u4e24\u4e2a\u961f\u5217 => \u6808 <\/p>\n<p>### 2.4 \u7b97\u6cd5\u548c\u6570\u636e\u64cd\u4f5c<br \/>\n###### \u7b97\u6cd5<br \/>\n* \u5e38\u8003\u4f3c\u6570\u636e\u7ed3\u6784<br \/>\n* \u5e38\u53ef \u9012\u5f52\/\u5faa\u73af<br \/>\n\t* \u9012\u5f52 \u66f4\u7b80\u6d01 \u6027\u80fd\u4f4e<\/p>\n<p>* \u6392\u5e8f \u67e5\u627e \u5e38\u8003<br \/>\n\t* \u4e8c\u5206\u67e5\u627e<br \/>\n\t* \u5f52\u5e76\u6392\u5e8f &#038;&#038; \u5feb\u6392<br \/>\n* \u4e8c\u7ef4\u6570\u7ec4\u641c\u7d22\u8def\u5f84<br \/>\n\t* <- \u56de\u6eaf\u6cd5\n\t\t* <- \u5e38\u9012\u5f52\u5b9e\u73b0\n\t\t* \u6216\u6808\u5b9e\u73b0\n\n\n###### \u4f4d\u8fd0\u7b97\n\n#### 2.4.1 \u9012\u5f52\u548c\u5faa\u73af\n* fibonacci\n\t* \u81ea\u4e0a\u800c\u4e0b\u9012\u5f52 <- \u6548\u7387\u4f4e\n\t* \u81ea\u4e0b\u800c\u4e0a\u5faa\u73af <- \u5b9e\u7528\n\t* \u751f\u50fb\u516c\u5f0fO(logn) <- \u4e0d\u5b9e\u7528\n\n##### 2.4.2 \u67e5\u627e\u548c\u6392\u5e8f\n###### \u67e5\u627e\n* \u5206\u7c7b\n\t* \u987a\u5e8f\u67e5\u627e\n\t* \u4e8c\u5206\u67e5\u627e <- \u5faa\u73af \/ \u9012\u5f52\n\t\t* <- \u4e00\u5b9a\u638c\u63e1 \n\t* \u54c8\u5e0c\u8868\u67e5\u627e <- \u4e3b\u8981\u8003\u5bdf\u6570\u636e\u7ed3\u6784\u800c\u975e\u7b97\u6cd5\n\t\t* \u65f6O(1)\u67e5\u627e\u5143\u7d20\uff0c\u6548\u7387\u6700\u9ad8\n\t\t* \u7f3a\u70b9\uff1a \u9700\u8981\u989d\u5916\u7a7a\u95f4 \n\t* \u4e8c\u53c9\u6392\u5e8f\u6811\u67e5\u627e <- \u4e3b\u8981\u8003\u5bdf\u6570\u636e\u7ed3\u6784\u800c\u975e\u7b97\u6cd5\n\t\t* -> \u4e8c\u53c9\u641c\u7d22\u6811<br \/>\n* (\u90e8\u5206)\u6392\u5e8f\u7684 \u6570\u7ec4\u4e2d\u67e5\u627e \u6570\u5b57\/\u6570\u5b57\u51fa\u73b0\u4e4b\u6b21\u6570<br \/>\n\t* <- \u4e8c\u5206\u67e5\u627e \n\n```\npublic int search(int[] nums, int target) {\n    int start = 0, end = nums.length - 1;\n    int mid = (start + end) >> 1;<br \/>\n    while (start <= end) {\n        mid = (start + end) >> 1;<br \/>\n        if (target == nums[mid]) return mid;<br \/>\n        else if (target < nums[mid]) {\n            end = mid-1;\n        } else {\n            start = mid+1;\n        }\n    }\n    return -1;\n}\n```\n\n###### \u6392\u5e8f\n* \u5206\u7c7b\n\t* \u63d2\u5165\u6392\u5e8f\n\t* \u5192\u6ce1\u6392\u5e8f\n\t* \u5f52\u5e76\u6392\u5e8f\n\t* \u5feb\u6392\n\t\t* \u5e38\u8981\u624b\u5199 -> \u8bb0<br \/>\n\t* \u5176\u5b83<br \/>\n* \u5e38\u6bd4\u8f83\u5404\u7c7b\u4f18\u52a3<br \/>\n\t* \u8bb0<br \/>\n\t\t* \u7b97\u6cd5\u7279\u70b9<br \/>\n\t\t* \u989d\u5916\u7a7a\u95f4\u6d88\u8017<br \/>\n\t\t* \u5e73\u5747\u65f6\u95f4\u590d\u6742\u5ea6<br \/>\n\t\t* \u6700\u5dee\u65f6\u95f4\u590d\u6742\u5ea6 <\/p>\n<p>###### \u9762\u8bd5\u65f6<br \/>\n* \u95ee\u6e05\u5e94\u7528\u73af\u5883<br \/>\n* \u95ee\u6e05\u7ea6\u675f\u6761\u4ef6\uff08\u65f6\u95f4\u7a7a\u95f4\u9650\u5236\uff09<\/p>\n<p>* \u5192\u6ce1\u6392\u5e8f<\/p>\n<p>&#8220;`<br \/>\nfor (int i=0; i<nums.length; ++i) {\n    for (int k=0; (k+1)<(nums.length-i); k++) {\n        if (nums[k] > nums[k+1]) {<br \/>\n            int temp = nums[k];<br \/>\n            nums[k] = nums[k+1];<br \/>\n            nums[k+1] = temp;<br \/>\n        }<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u7b80\u5355\u9009\u62e9\u6392\u5e8f<\/p>\n<p>&#8220;`<\/p>\n<p>for (int i=0; i<nums.length; ++i) {\n    int minIndex = i;\n    for (int k=i+1; k<nums.length; ++k) {\n        if (nums[k] < nums[minIndex]) {\n            minIndex = k;\n        }\n    }\n    if (minIndex == i) continue;\n    int temp = nums[i];\n    nums[i] = nums[minIndex];\n    nums[minIndex] = temp;\n}\n```\n\n* \u76f4\u63a5\u63d2\u5165\u6392\u5e8f\n\n```\nfor (int i=1; i<nums.length; ++i) {\n    int tmp = nums[i];\n    int k = i-1;\n    while (k >= 0 &#038;&#038; nums[k] > tmp) {<br \/>\n        nums[k+1] = nums[k];<br \/>\n        &#8211;k;<br \/>\n    }<br \/>\n    ++k;<br \/>\n    nums[k] = tmp;<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u5f52\u5e76\u6392\u5e8f<\/p>\n<p>&#8220;`<br \/>\nprivate void merge(int[] nums, int left, int mid, int right) {<br \/>\n    int i1=left, i2=mid + 1;<br \/>\n    int[] tmpArr = new int[right &#8211; left + 1];<br \/>\n    int c = 0;<br \/>\n    while (i1 <= mid &#038;&#038; i2 <= right) {\n        if (nums[i1] <= nums[i2]) {\n            tmpArr[c++] = nums[i1++];\n        } else {\n            tmpArr[c++] = nums[i2++];\n        }\n    }\n    while (i1 <= mid) { tmpArr[c++] = nums[i1++]; }     \n    while (i2 <= right) { tmpArr[c++] = nums[i2++]; }   \n    for (int i=left; i<=right; ++i) {\n        nums[i] = tmpArr[i-left];\n    }\n}\nprivate void mergeSortRe(int[] nums, int left, int right) {\n    if (left == right) return;\n    int midIndex = (left + right) >> 1;<br \/>\n    mergeSortRe(nums, 0, midIndex);<br \/>\n    mergeSortRe(nums, midIndex + 1, right);<br \/>\n    merge(nums, left, midIndex, right);<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u65f6O(n)\uff0c\u7a7aO(1)\u7684\u6392\u5e8f\u7b97\u6cd5<\/p>\n<p>&#8220;`<br \/>\n\/\/ kong<br \/>\n\/\/ nums\u91cc\u7684\u6570\u5c5e\u4e8e[0, MAX]<br \/>\nint MAX = 100;<br \/>\n\/\/ \u7a7aO(1) \u4e3a\u5e38\u91cf<br \/>\nint[] count = new int[100];<br \/>\nSystem.out.println(count.length);<br \/>\n\/\/ \u65f6O(n)<br \/>\nfor (int i=0; i<nums.length; ++i) {\n    count[nums[i]]++;\n}\nint c = 0;\n\/\/ \u65f6O(1)\uff0c\u4e3a\u5e38\u91cf\nfor (int i=0; i<count.length; ++i) {\n    for (int k=0; k<count[i]; ++k) {\n        nums[c++] = i;\n    }\n}\n```\n\n* \u5feb\u901f\u6392\u5e8f\n\t* \u5feb\u6392\u901a\u5e38\u660e\u663e\u6bd4\u5176\u5b83O(nlogn)\u66f4\u5feb, \u56e0\u5176\u5185\u90e8\u5faa\u73af\u53ef\u4ee5\u5728\u5927\u90e8\u5206\u7684\u67b6\u6784\u4e0a\u5f88\u6709\u6548\u7387\u7684\u88ab\u5b9e\u73b0\u51fa\u6765\n\t* \u5feb\u6392\u4f7f\u7528\u5206\u6cbb\u7b56\u7565\n\t* \u6700\u5dee\u65f6\u95f4\u590d\u6742\u5ea6\uff1a\u6bcf\u6b21\u9009\u53d6\u7684\u57fa\u51c6\u90fd\u662fmax\/min\uff0c\u5bfc\u81f4\u6bcf\u6b21\u4ec5\u5212\u5206\u51fa\u4e00\u4e2a\u5206\u533a\uff0c\u9700\u8981\u8fdb\u884cn-1\u6b64\u5206\u533a\u624d\u80fd\u7ed3\u675f\n\n```\nprivate int Partion(int[] nums, int left, int right) {\n    int pivot = nums[right]; \/\/ \u9009\u6700\u540e\u4e00\u4e2a\u505a\u57fa\u51c6\n    int tail = left - 1; \/\/ tail\u4e3a [\u5c0f\u4e8e\u57fa\u51c6\u90a3\u90e8\u5206\u6570]\u7684[\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u7684\u7d22\u5f15]\n    for (int i=left; i<right; ++i) { \/\/ \u904d\u5386\u9664\u57fa\u51c6\u4ee5\u5916\u7684\u5176\u4ed6\u5143\u7d20\n        if (nums[i] <= pivot) { \/\/ [<=\u57fa\u51c6\u7684\u6570]\u653e\u5230[\u5c0f\u4e8e\u57fa\u51c6\u90a3\u90e8\u5206\u6570]\u7684\u672b\u5c3e\n            ++tail;\n            int tmp = nums[i];\n            nums[i] = nums[tail];\n            nums[tail] =  tmp;\n        }\n    }\n    ++tail;\n    int tmp = nums[tail];\n    nums[tail] = nums[right]; \/\/ = pivot\n    nums[right] = tmp;\n    return tail;\n}\nprivate void quickSort(int[] nums, int left, int right) {\n    if (left >= right) return;<br \/>\n    int pivotIndex = Partion(nums, left, right);<br \/>\n    quickSort(nums, left, pivotIndex &#8211; 1);<br \/>\n    quickSort(nums, pivotIndex + 1, right);<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u5806\u6392\u5e8f<\/p>\n<p>&#8220;`<br \/>\n\/\/ \u5927\u9876\u5806<br \/>\npublic void bigHeapify(int[] nums, int index, int length) {<br \/>\n    int leftI =  2 * index + 1, rightI = 2 * index + 2;<br \/>\n    if (leftI < length &#038;&#038; nums[leftI] > nums[index]) {<br \/>\n        int tmp = nums[index];<br \/>\n        nums[index] = nums[leftI];<br \/>\n        nums[leftI] = tmp;<br \/>\n        bigHeapify(nums, leftI, length);<br \/>\n    }<br \/>\n    if (rightI < length &#038;&#038; nums[rightI] > nums[index]) {<br \/>\n        int tmp = nums[index];<br \/>\n        nums[index] = nums[rightI];<br \/>\n        nums[rightI] = tmp;<br \/>\n        bigHeapify(nums, rightI, length);<br \/>\n    }<br \/>\n}<br \/>\npublic void buildBigHeap(int[] nums) {<br \/>\n    for (int i= (nums.length \/ 2 &#8211; 1 ); i >= 0; &#8211;i) {<br \/>\n        bigHeapify(nums, i, nums.length);<br \/>\n    }<br \/>\n}<br \/>\npublic void bigHeapSort(int[] nums) {<br \/>\n    buildBigHeap(nums);<br \/>\n    int length = nums.length &#8211; 1;<br \/>\n    while (length >= 1) {<br \/>\n        int tmp = nums[0];<br \/>\n        nums[0] = nums[length];<br \/>\n        nums[length] = tmp;<br \/>\n        bigHeapify(nums, 0, length);<br \/>\n        &#8211;length;<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>* \u6bd4\u8f83<\/p>\n<p>| \u6392\u5e8f\u65b9\u6cd5     | \u5e73\u5747\u60c5\u51b5 | \u6700\u574f\u60c5\u51b5                            | \u8f85\u52a9\u7a7a\u95f4     | \u7a33\u5b9a\u6027                                                     | \u9002\u7528         |<br \/>\n| &#8212;          | &#8212;      | &#8212;                                 | &#8212;          | &#8212;                                                        | &#8212;          |<br \/>\n| \u5192\u6ce1\u6392\u5e8f     | O(n^2)   | O(n^2)                              | O(1)         | \u7a33\u5b9a                                                       |<br \/>\n| \u7b80\u5355\u9009\u62e9\u6392\u5e8f | O(n^2)   | O(n^2)                              | O(1)         | \u4e0d\u7a33\u5b9a\uff08\u628a\u6700\u5c0f\u5143\u7d20\u653e\u5230\u524d\u9762\u662f\u6765\u65f6\uff0c\u524d\u9762\u7684\u88ab\u653e\u5230\u4e86\u540e\u9762\uff09     |<br \/>\n| \u76f4\u63a5\u63d2\u5165\u6392\u5e8f | O(n^2)   | O(n^2)                              | O(1)         | \u7a33\u5b9a                                                       | \u5c11\u91cf\u5143\u7d20\u6392\u5e8f |<br \/>\n| \u5f52\u5e76\u6392\u5e8f     | O(nlogn) | O(nlogn)                            | O(n)         | \u7a33\u5b9a(\u4e24\u90e8\u5206\u5224\u65ad\u65f6\uff0c\u5e94\u5224\u65ad \u524d\u4e00\u90e8\u5206\u7684<=\u540e\u4e00\u90e8\u5206\u7684\uff0c=\u4e0d\u80fd\u5c11) |\n| \u5feb\u901f\u6392\u5e8f     | O(nlogn) | O(n^2) [\u4e3b\u8981\u662f\u9012\u5f52\u9020\u6210\u7684\u6808\u7a7a\u95f4\u4f7f\u7528] | O(logn)~O(n) | \u4e0d\u7a33\u5b9a(\u904d\u5386\u5b8c\u540e\uff0c\u57fa\u51c6\u548ctail\u4ea4\u6362\u65f6\uff0c\u524d\u9762\u7684\u653e\u5230\u4e86\u540e\u9762\u6765)     |\n| \u5806\u6392\u5e8f       | O(nlogn) | O(nlogn)                            | O(1)         | \u4e0d\u7a33\u5b9a(heapSort\u91cc\u5c06\u9876\u4e0e\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4ea4\u6362\u65f6)\n\n##### 2.4.3 \u56de\u6eaf\u6cd5\n* \u672c\u8d28\u4e0a\u5176\u5b9e\u662fdfs...\n\n##### 2.4.4 \u52a8\u6001\u89c4\u5212\u4e0e\u8d2a\u5a6a\u7b97\u6cd5\n* dp\u7279\u70b9\n\t* \u6c42\u6700\u4f18\u70b9\n\t* \u6700\u4f18\u89e3\u4f9d\u8d56\u4e8e\u5404\u5b50\u95ee\u9898\u6700\u4f18\u89e3\n\t* \u95ee\u9898\u5206\u4e3a\u591a\u4e2a\u5b50\u95ee\u9898\u540e\uff0c\u5b50\u95ee\u9898\u95f4\u8fd8\u6709\u66f4\u5c0f\u7684\u5b50\u95ee\u9898\n\t* \u81ea\u4e0a\u800c\u4e0b\u7684\u9012\u5f52\u601d\u8def\u5206\u6790 &#038;&#038; \u81ea\u4e0b\u800c\u4e0a\u7684\u5faa\u73af\n\t\t* \u5b50\u95ee\u9898\u6700\u4f18\u89e3\u7528\u6570\u7ec4\u4fdd\u5b58(1\/2\u7ef4) \u6216 \u4ece\u4e0b\u5f80\u4e0a\u8ba1\u7b97\n\t\t\t* \u7531\u5b50\u95ee\u9898\u89e3\u8ba1\u7b97\u5927\u95ee\u9898\u89e3 -> \u907f\u514d\u91cd\u590d\u8ba1\u7b97<br \/>\n* \u52a8\u6001\u89c4\u5212<br \/>\n    * \u6709\u591a\u4e2a\u9009\u62e9\u5219\u90fd\u5c1d\u8bd5\u63a5\u7740\u627e\u51fa\u6700\u4f18 <\/p>\n<p>* \u52a8\u89c4\u4e2d\uff0c\u5206\u89e3\u5b50\u95ee\u9898\u65f6\u7279\u6b8a\u9009\u62e9\u4e00\u5b9a\u5f97\u5230\u6700\u4f18\u89e3<br \/>\n\t* -> \u53ef\u8d2a\u5a6a\u7b97\u6cd5<\/p>\n<p>##### 2.4.5 \u4f4d\u8fd0\u7b97<br \/>\n* n = (n-1)&#038;n -> n\u4e2d\u6700\u53f3\u8fb9\u76841\u53d8\u62100<br \/>\n\t* ( x1 ^ x2 )\u4e2d1\u7684\u4e2a\u6570 = x1\u53d8\u6210x2\u9700\u8981\u6539\u53d8\u7684bit\u4f4d\u6570<\/p>\n<p>## 3 \u9ad8\u8d28\u91cf\u7684\u4ee3\u7801<br \/>\n### 3.1 \u9762\u8bd5\u5b98\u8c08\u4ee3\u7801\u8d28\u91cf<br \/>\n* \u5bb9\u9519\u5904\u7406\u80fd\u529b <- alipay\n\t* \u7279\u522b\u8f93\u5165\u5982\u4f55\u5904\u7406\n\t* \u4ee3\u7801\u4e0d\u80fd\u53ea\u662f\u9488\u5bf9 \u5047\u60f3\u7684\u6b63\u5e38\u503c\u8fdb\u884c\u5904\u7406\n\t* \u8981\u8003\u8651\u5f02\u5e38\u60c5\u51b5\n\t* \u8981\u8003\u8651\u8d44\u6e90\u56de\u6536\u7b49\u95ee\u9898\n* \u4e0d\u80fd\u8be5\u638c\u63e1\u7684\u59b9\u638c\u63e1\uff0c\u63d0\u9192\u4e86\u8fd8\u4e0d\u77e5\u9053 <-autodesk\n\t* \u6d6e\u70b9\u6570\u56e0\u4e3a\u7cbe\u5ea6\u95ee\u9898\uff0c\u4e0d\u80fd\u7528==\u53bb\u5224\u65ad\u662f\u5426\u76f8\u7b49  \n* \u5370\u8c61\u5927\u6253\u6298\u6263 <- intel\n\t* x \u53d8\u91cf \u51fd\u6570\u547d\u540d\u59b9\u7ae0\u6cd5 x\n\t* x \u89e3\u51b3\u5177\u4f53\u95ee\u9898\u627e\u4e0d\u5230\u6700\u5408\u9002\u7684\u6570\u636e\u7ed3\u6784 x  \n\t* -> \u7a0b\u5e8f\u5199\u5f97\u592a\u5c11 \u4e0d\u591f\u719f\u6089<br \/>\n* \u7a0b\u5e8f\u6b63\u786e\u6027&#038;&#038;\u9c81\u68d2\u6027 <- \u5fae\u8f6f sdeII\n\t* \u65b9\u9762 \n\t\t* \u8f93\u5165\u53c2\u6570\u68c0\u67e5\n\t\t* \u5904\u7406\u9519\u8bef \u5f02\u5e38\u65b9\u5f0f\n\t\t* \u547d\u540d\u65b9\u5f0f  \n\t* \u8981\u6c42\n\t\t* \u5b66\u751f\uff1a\u6b63\u786e\u6027\u4e4b\u5916\u7684\u57fa\u672c\u80fd\u5bb9\u5fcd\uff0c\u63d0\u793a\u540e\u5e0c\u671b\u80fd\u5f88\u5feb\u89e3\u51b3\n\t\t* \u6709\u5de5\u4f5c\u7ecf\u9a8c\uff1a\u4e0d\u80fd\u5bb9\u5fcd\u8003\u8651\u4e0d\u5468\uff0c\u660e\u663e\u9c81\u68d2\u6027\u9519\u8bef \n\n### 3.2 \u4ee3\u7801\u7684\u89c4\u8303\u6027\n* \u89c4\u8303\u6027\u65b9\u9762\n\t* \u6e05\u6670\u7684\u4e66\u5199\n\t\t* \u9762\u8bd5\u5927\u90fd\u662f\u624b\u5199\u4ee3\u7801\n\t\t* \u4ee3\u7801\u91cf\u5927\u90fd<=50\u884c -> \u4e0d\u7528\u62c5\u5fe7\u59b9\u65f6\u95f4\u5199<br \/>\n\t* \u6e05\u6670\u7684\u5e03\u5c40<br \/>\n\t\t* \u624b\u5199\u6ce8\u610f \u7f29\u8fdb \u5bf9\u9f50\u4e4b\u7c7b\u7684<br \/>\n\t* \u5408\u7406\u7684\u547d\u540d<br \/>\n\t\t* \u63a8\u8350\u7528 \u5b8c\u6574\u7684\u82f1\u6587\u5355\u8bcd\u7ec4\u5408 \u547d\u540d \u53d8\u91cf\/\u51fd\u6570<br \/>\n\t\t\t* BinaryTreeNode * pRoot<br \/>\n\t\t* \u80fd\u770b\u51fa \u53d8\u91cf\/\u51fd\u6570 \u7684\u7528\u9014<\/p>\n<p>### 3.3 \u4ee3\u7801\u7684\u5b8c\u6574\u6027<br \/>\n###### \u4e09\u65b9\u9762\u786e\u4fdd\u5b8c\u6574\u6027<br \/>\n* \u529f\u80fd\u6d4b\u8bd5<br \/>\n* \u8fb9\u754c\u6d4b\u8bd5<br \/>\n\t* \u8f93\u5165\u8303\u56f4<br \/>\n\t* \u5faa\u73af\/\u9012\u5f52 \u7ec8\u6b62<br \/>\n* \u8d1f\u9762\u6d4b\u8bd5<br \/>\n\t* \u9519\u8bef\u8f93\u5165<\/p>\n<p>###### \u4e09\u79cd\u9519\u8bef\u5904\u7406\u7684\u65b9\u6cd5<br \/>\n* \u8fd4\u56de\u503c<br \/>\n    * \u5f88\u591awindows api\u5982\u6b64, 0->\u6210\u529f, \u5426\u5219\u5931\u8d25<br \/>\n* \u9519\u8bef\u53d1\u751f\u65f6\u8bbe\u7f6e\u5168\u533a\u53d8\u91cf<br \/>\n    * windows\u53ef\u901a\u8fc7GetLastError<br \/>\n    * \u8c03\u7528\u8005\u5fd8\u68c0\u67e5<br \/>\n* \u629b\u51fa\u5f02\u5e38<br \/>\n    * c#\u63a8\u8350 try catch\uff0cc\u65e0\u5f02\u5e38<br \/>\n    * \u7a0b\u5e8f\u6267\u884c\u987a\u5e8f\u88ab\u6253\u4e71\uff0c\u5f71\u54cd\u6027\u80fd\u3002<br \/>\n* \u548c\u9762\u8bd5\u5b98\u8ba8\u8bba\u5177\u4f53\u5982\u4f55\u5904\u7406<br \/>\n    * \u91c7\u7528\u8fd4\u56de\u503c\u5904\u7406\u9519\u8bef\uff0c\u5219\u8bf4\u8fd4\u56de\u503c\u542b\u4e49 -> \u8868\u793a\u8003\u8651\u5230\u4e86\u60c5\u51b5<\/p>\n<p>###### \u9898<br \/>\n* \u5b9e\u73b0\u7279\u5b9a\u5e93\u51fd\u6570(\u5c24\u5176\u662f\u5904\u7406\u6570\u503c\u548c\u5b57\u7b26\u4e32\u7684\u51fd\u6570)\u7684\u529f\u80fd\u662f\u4e00\u7c7b\u5e38\u89c1\u9762\u8bd5\u9898<br \/>\n    * \u5e73\u65f6\u80fd\u719f\u6089\u5e93\u51fd\u6570&#038;&#038;\u7406\u89e3\u5e93\u51fd\u6570\u7684\u5b9e\u73b0\u539f\u7406<br \/>\n* double\u9664\u4e86\u5e73\u65f6\u5224\u65ad\u65f6\u8981\u6ce8\u610f(double = 0  <=> \u7edd\u5bf9\u503c\u5f88\u5c0f), double\u4f5c\u4e3a\u8fd4\u56de\u503c\u65f6\u4e5f\u8981\u6ce8\u610f\u3002<br \/>\n* \u9664\u4ee52\u90fd\u7528>>1<br \/>\n* \u5224\u65ad\u662f\u5426\u4e3a\u5947\u6570\u7528 (x&#038;0x1 == 1)<br \/>\n* char\u6570\u7ec4\u521d\u59cb\u5316\u540e\u9ed8\u8ba4\u4e3a0\u800c\u4e0d\u662f&#8217;0&#8242;<br \/>\n* \u8003\u8651\u4ee3\u7801\u7684\u53ef\u6269\u5c55\u6027\uff0c\u5982\u7c7b\u4f3csort\u90a3\u6837\u62bd\u79bb\u51fa\u5224\u65ad\u7684\u51fd\u6570<\/p>\n<p>###### \u9762\u7ecf<br \/>\n* \u5b9e\u4e60\u5f88\u770b\u91cd\u57fa\u7840\uff0c\u53ef\u4ee5\u76f4\u63a5\u6309\u7167\u9762\u7ecf\u51c6\u5907\uff0c\u5199\u5230\u7b80\u5386\u4e0a\u7684\u4e00\u5b9a\u8981\u4fdd\u8bc1\u9762\u8bd5\u5b98\u95ee\u4e0d\u4f4f\u6ce5\u3002 <- by ywt, 2020-02-13\n* \u9762\u8bd5\u5b98\u95ee\u5565\u7b54\u5565\uff0c\u6709\u4e0d\u660e\u767d\u5c31\u63d0\u51fa\u7591\u95ee\uff0c\u8981\u8425\u9020\u4e00\u79cd\u6280\u672f\u4ea4\u6d41\u7684\u6c1b\u56f4\u3002\n\n###### java\u65b9\u6cd5\u53c2\u6570\u91cc\u7684\u5bf9\u8c61\u4e5f\u53ef\u80fd\u662fnull, \u8981\u5224\u65ad\n\n### 3.3 \u4ee3\u7801\u7684\u9c81\u68d2\u6027\n* \u9762\u8bd5\u65f6\u6700\u7b80\u5355\u5b9e\u7528\u7684\u662f \u68c0\u67e5\u8f93\u5165\n* \u9762\u8bd5\u5b98\u68c0\u67e5\u4ee3\u7801\u7684\u65b9\u6cd5\u4e5f\u662f \u7528\u6d4b\u8bd5\u7528\u4f8b\u8fdb\u884c\u6d4b\u8bd5\n* \u6ca1\u6709\u7279\u522b\u8981\u6c42\u7684\u8bdd\uff0c\u4e8c\u53c9\u6811\u7684\u904d\u5386\u7528\u9012\u5f52\u53bb\u505a\uff0c\u56e0\u4e3a\u4ee3\u7801\u7b80\u6d01\n\n###### \u9898\n* \u7528\u4e00\u4e2a\u6307\u9488\u904d\u5386\u94fe\u8868\u4e0d\u80fd\u89e3\u51b3\u95ee\u9898\u65f6\uff0c\u53ef\u5c1d\u8bd5\u7528\u4e24\u4e2a\uff0c\u8ba9\u5176\u4e2d\u4e00\u4e2a\u6307\u9488\u904d\u5386\u5feb\u4e00\u4e9b\uff0c\u6216\u8ba9\u5148\u8d70\u82e5\u5e72\u6b65\u3002\n\n###### \u9898\n* 20\u6ca1\u505a\n* 23\u6ca1\u627e\u5230\u9898\n\n## 4 \u89e3\u51b3\u9762\u8bd5\u9898\u7684\u601d\u8def\n### 4.1 \u9762\u8bd5\u5b98\u8c08\u9762\u8bd5\u601d\u8def\n* \u7f16\u7801\u524d\u8bb2\u81ea\u5df1\u7684\u601d\u8def\u662f\u4e00\u4e2a\u8003\u5bdf\u6307\u6807\u3002\u4e00\u5f00\u59cb\u5c31\u7f16\u7801\u7684\u9664\u975e\u540e\u9762\u5f88\u4f18\u79c0\uff0c\u5426\u5219\u5f88\u5bb9\u6613\u901a\u4e0d\u8fc7 --\u652f\u4ed8\u5b9d\u7684\n* \u60f3\u8ba9\u5e94\u8058\u8005\u8bb2\u601d\u8def\u5e76\u8bc1\u660e --\u767e\u5ea6\u7684\n* \u60f3\u8ba9\u5e94\u8058\u8005\u8bb2\u601d\u8def\u3002\u5982\u679c\u5e94\u8058\u8005\u6ca1\u60f3\u6e05\u695a\u5c31\u52a8\u624b\uff0c\u672c\u8eab\u5c31\u4e0d\u662f\u592a\u597d\u3002\u5e94\u8058\u8005\u53ef\u4e3e\u4f8b\u3001\u753b\u56fe\u7b49\u65b9\u5f0f\u89e3\u91ca\u6e05\u695a\u3002 --sap\u7684\n* \u4e00\u822c\u6700\u597d\u5728\u5f00\u59cb\u5199\u4e4b\u524d\u8bb2\u6e05\u601d\u8def\u548c\u8bbe\u8ba1 --\u6dd8\u5b9d\u7684\n* \u60f3\u8ba9\u5e94\u8058\u8005\u8bb2\u601d\u8def\uff0c\u8bb2\u9519\u4e86\u5c31\u8ba9ta\u8bc1\u660e\u4ee5\u4fbfta\u81ea\u5df1\u53d1\u73b0 --\u5fae\u8f6f\u7684\n\n### 4.2 \u753b\u56fe\u8ba9\u62bd\u8c61\u95ee\u9898\u5f62\u8c61\u5316\n* \u5e94\u8058\u8005\u9700\u8981\u5411\u9762\u8bd5\u5b98\u89e3\u91ca\u81ea\u5df1\u7684\u601d\u8def\uff0c\u8bf4\u4e0d\u6e05\u7684\u753b\u56fe\uff0c\u770b\u56fe\u8bb2\u89e3\uff0c\u8fd9\u663e\u793a\u826f\u597d\u7684\u6c9f\u901a\u4ea4\u6d41\u80fd\u529b\n\n### 4.3 \u4e3e\u4f8b\u8ba9\u62bd\u8c61\u95ee\u9898\u5177\u4f53\u5316\n* \u82e5\u8981\u6c42\u5904\u7406\u4e8c\u53c9\u6811\u7684\u904d\u5386\u5e8f\u5217\uff0c\u5219\u53ef\u4ee5\u5148\u627e\u5230\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9\uff0c\u63a5\u7740\u62c6\u5206\u6210\u5de6\u53f3\u5b50\u6811\u63a5\u7740\u5904\u7406\n\n### 4.4 \u5206\u89e3\u8ba9\u590d\u6742\u95ee\u9898\u7b80\u5355\u5316\n* \u82e5\u6c42\u7b26\u5408\u4e00\u5b9a\u6761\u4ef6\u7684\u6392\u5217\u7ec4\u5408\uff0c\u5219\u6c42\u51fa\u6240\u6709\u518d\u7b5b\u9009\n* \u82e5\u6c42\u591a\u4e2a\u5143\u7d20\u7684\u6392\u5217\u7ec4\u5408\uff0c\u5219\u628a\u8fd9\u4e9b\u5143\u7d20\u4eec\u5206\u6210 \u4e00\u4e2a+\u53e6\u5916\uff0c\u63a5\u7740\u9012\u5f52\n\n### 4\u4e4b\u603b\u7ed3\n* \u505a\u7b97\u6cd5\u9898\u65f6\uff0c\u4e3e\u4f8b\u5206\u6790\u5199\u51fa\u5927\u90e8\u5206\u4ee3\u7801\u540e\uff0c\u518d\u5b8c\u6574\u5e26\u5165\u4e00\u4e2a\u4f8b\u5b50\u8fdb\u884c\u4ee3\u7801\u5b8c\u5584\u800c\u4e0d\u662f\u7acb\u5373\u8dd1\u8d77\u7a0b\u5e8f\u8fdb\u884c\u6d4b\u9a8c(\u663e\u5f97\u4e0d\u597d)\n* \u5206\u6cbb\u3001\u52a8\u6001\u89c4\u5212\u90fd\u662f\u5206\u89e3\u95ee\u9898\u7684\u601d\u8def\n\n## 5 \u4f18\u5316\u65f6\u7a7a\u6548\u7387\n### 5.1 \u9762\u8bd5\u5b98\u8c08\u6548\u7387\n* \u9762\u8bd5\u65f6\u5bf9\u65f6\u7a7a\u6709\u8981\u6c42 --baidu\n* \u5185\u5b58\u4e0d\u662f\u7279\u522b\u5927\u7684\u8bdd\uff0c\u65f6\u66f4\u91cd\u8981\u56e0\u6539\u8fdb\u65f6\u95f4\u590d\u6742\u5ea6\u5bf9\u7b97\u6cd5\u8981\u6c42\u66f4\u9ad8 --\u82f1\u4f1f\u8fbe\n* \u666e\u901a\u5e94\u7528\u7a7a\u95f4\u6362\u65f6\u95f4\uff0c\u56e0(\u7528\u6237\u66f4\u5173\u5fc3\u901f\u5ea6\u3001\u7a7a\u95f4\u4e00\u822c\u591f); \u5d4c\u5165\u5f0f\u8bbe\u5907\u5219\u7a7a\u95f4\u6362\u65f6\u95f4\uff0c\u56e0\u7a7a\u95f4\u5c11 -- \u5fae\u8f6f\n\n### 5.2 \u65f6\u95f4\u6548\u7387\n* \u9996\u5148\u60f3\u5230\u7684\u76f4\u89c2\u7684\u89e3\u6cd5\u4e0d\u59a8\u8bf4\u51fa\n* \u63d0\u793a\u6211\u4eec\u8fd8\u6709\u66f4\u597d\u7684\u529e\u6cd5\u65f6\uff0c\u4e0d\u80fd\u8f7b\u8a00\u653e\u5f03\uff0c\u800c\u8981\u79ef\u6781\u601d\u8003\u3001\u4e0d\u540c\u89d2\u5ea6\u601d\u8003\u9898\uff0c\u800c\u975e\u9047\u96be\u9898\u9000\u7f29\n* \u8bb8\u591a\u516c\u53f8\u5e38\u95ee\u6d77\u91cf\u8f93\u5165\u6570\u636e\u76f8\u5173\u95ee\u9898\u3002\u8fd9\u79cd\u95ee\u9898\u4e2d\uff0c\u5185\u5b58\u4e0d\u80fd\u88c5\u5165\u6240\u6709\u8f93\u5165\u6570\u636e\uff0c\u53ea\u80fd\u6e10\u6e10\u7684\u8bfb\u5165\u4e00\u4e9b\uff0c\u56e0\u6b64\u7c7b\u4f3cPartion()\u4e4b\u7c7b\u7684\u64cd\u4f5c\u4e0d\u9002\u7528\n    * \u89e3\u6cd5\u591a\u79cd\u3001\u5404\u6709\u4f18\u7f3a\u70b9\u65f6\uff0c\u8981\u95ee\u6e05\n        * \u6570\u636e\u91cf\u591a\u5927\u3001\u80fd\u5426\u4e00\u6b21\u6027\u8f7d\u5165\u5185\u5b58\n        * \u662f\u5426\u53ef\u4fee\u6539\u5f15\u7528\u7c7b\u578b\u6240\u6307\u5411\u7684(\u5373\u8f93\u5165\u6570\u7ec4\u4e4b\u7c7b\u7684)\n* \u82e5\u9891\u7e41\u67e5\u627e\u3001\u66ff\u6362\u66ff\u6362 min\/max, \u5e94\u7528\u4e8c\u53c9\u6811(\u5806\u3001\u7ea2\u9ed1\u6811\u7b49\u5b9e\u73b0)\n* \u8003\u8651\u7528map\u65f6\uff0c\u82e5\u952e\u7684\u8303\u56f4\u5f88\u5c0f\uff0c\u5982\u952e\u53ea\u662f\u5b57\u6bcd\uff0c\u90a3\u5c31\u53ef\u4ee5\u7528\u6570\u7ec4\u800c\u4e0d\u662fmap\n\n### 5.3 \u65f6\u7a7a\u5e73\u8861\n### 5.4 \u672c\u7ae0\u5c0f\u7ed3\n\n## 6 \u9762\u8bd5\u4e2d\u7684\u5404\u79cd\u80fd\u529b\n### 6.5 \u53d1\u6563\u601d\u7ef4\u80fd\u529b\n* \u4e0d\u7528\u65b0\u53d8\u91cf\u4ea4\u6362\u4e24\u4e2a\u53d8\u91cf\n\n```\na = a ^ b;\nb = a ^ b;\na = a ^ b;\n```\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p># \u5251\u6307offer ## 1. \u9762\u8bd5\u7684\u6d41\u7a0b ### 1.1 \u9762\u8bd5\u5b98\u8c08\u9762\u8bd5 ### 1.2 \u9762\u8bd5\u76843\u79cd\u5f62\u5f0f ## [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"class_list":["post-1434","post","type-post","status-publish","format-standard","hentry","category-36"],"_links":{"self":[{"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/posts\/1434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1434"}],"version-history":[{"count":1,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/posts\/1434\/revisions"}],"predecessor-version":[{"id":1435,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/posts\/1434\/revisions\/1435"}],"wp:attachment":[{"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}