[{"data":1,"prerenderedAt":13060},["ShallowReactive",2],{"navigation_docs":3,"-algorithm-time-space-complexity":173,"-algorithm-time-space-complexity-surround":13057},[4,22,29,36,107,138,145,161],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"博客","i-lucide-pen-line","\u002Fblog","0.blog",[10,12,17],{"title":5,"path":7,"stem":11,"icon":6},"0.blog\u002Findex",{"title":13,"path":14,"stem":15,"icon":16},"创建基于 UIKit 的原生 iOS 项目","\u002Fblog\u002Fcreate-uikit-ios-project","0.blog\u002F01.create-uikit-ios-project","i-lucide-app-window",{"title":18,"path":19,"stem":20,"icon":21},"Lockify：把账号和密码留在自己的手机里","\u002Fblog\u002Flockify","0.blog\u002F02.lockify","i-lucide-lock",{"title":23,"path":24,"stem":25,"children":26,"icon":28},"年度总结","\u002Fannual-review","1.annual-review\u002Findex",[27],{"title":23,"path":24,"stem":25,"icon":28},"i-lucide-git-commit",{"title":30,"path":31,"stem":32,"children":33,"icon":35},"故事","\u002Fstories","2.stories\u002Findex",[34],{"title":30,"path":31,"stem":32,"icon":35},"i-lucide-feather",{"title":37,"icon":38,"path":39,"stem":40,"children":41},"Android","i-simple-icons-android","\u002Fandroid","3.android",[42,44,49],{"title":37,"path":39,"stem":43,"icon":38},"3.android\u002Findex",{"title":45,"path":46,"stem":47,"icon":48},"初探Navigation","\u002Fandroid\u002Fcompose-navigation","3.android\u002F01.compose-navigation","i-lucide-route",{"title":50,"icon":51,"path":52,"stem":53,"children":54},"安卓代码加固","i-lucide-shield","\u002Fandroid\u002Fhidden-hardening","3.android\u002F02.hidden-hardening\u002Findex",[55,58,62,67,72,77,82,87,92,97,102],{"title":56,"path":52,"stem":53,"icon":57},"安卓代码加固：总览","i-lucide-map",{"title":59,"path":60,"stem":61,"icon":21},"安卓代码加固（1）：加密DEX","\u002Fandroid\u002Fhidden-hardening\u002Fencrypt-dex","3.android\u002F02.hidden-hardening\u002F01.encrypt-dex",{"title":63,"path":64,"stem":65,"icon":66},"安卓代码加固（2）：Native解密","\u002Fandroid\u002Fhidden-hardening\u002Fnative-decrypt","3.android\u002F02.hidden-hardening\u002F02.native-decrypt","i-lucide-cpu",{"title":68,"path":69,"stem":70,"icon":71},"安卓代码加固（3）：内存加载","\u002Fandroid\u002Fhidden-hardening\u002Fmemory-load","3.android\u002F02.hidden-hardening\u002F03.memory-load","i-lucide-memory-stick",{"title":73,"path":74,"stem":75,"icon":76},"安卓代码加固（4）：指令分发","\u002Fandroid\u002Fhidden-hardening\u002Fopcode-dispatch","3.android\u002F02.hidden-hardening\u002F04.opcode-dispatch","i-lucide-hash",{"title":78,"path":79,"stem":80,"icon":81},"安卓代码加固（5）：XOR混淆","\u002Fandroid\u002Fhidden-hardening\u002Fxor-obfuscate","3.android\u002F02.hidden-hardening\u002F05.xor-obfuscate","i-lucide-shuffle",{"title":83,"path":84,"stem":85,"icon":86},"安卓代码加固（6）：密钥外置","\u002Fandroid\u002Fhidden-hardening\u002Fkey-external","3.android\u002F02.hidden-hardening\u002F06.key-external","i-lucide-key",{"title":88,"path":89,"stem":90,"icon":91},"安卓代码加固（7）：依赖隔离","\u002Fandroid\u002Fhidden-hardening\u002Fdep-isolate","3.android\u002F02.hidden-hardening\u002F07.dep-isolate","i-lucide-layers",{"title":93,"path":94,"stem":95,"icon":96},"安卓代码加固（8）：构建校验","\u002Fandroid\u002Fhidden-hardening\u002Fbuild-verify","3.android\u002F02.hidden-hardening\u002F08.build-verify","i-lucide-shield-check",{"title":98,"path":99,"stem":100,"icon":101},"安卓代码加固（9）：防录屏","\u002Fandroid\u002Fhidden-hardening\u002Fflag-secure","3.android\u002F02.hidden-hardening\u002F09.flag-secure","i-lucide-eye-off",{"title":103,"path":104,"stem":105,"icon":106},"安卓代码加固（10）：ABI门禁","\u002Fandroid\u002Fhidden-hardening\u002Fabi-gate","3.android\u002F02.hidden-hardening\u002F10.abi-gate","i-lucide-git-compare",{"title":108,"icon":109,"path":110,"stem":111,"children":112},"iOS","i-simple-icons-apple","\u002Fios","4.ios",[113,115,120,125,129,133],{"title":108,"path":110,"stem":114,"icon":109},"4.ios\u002Findex",{"title":116,"path":117,"stem":118,"icon":119},"iOS面试题1","\u002Fios\u002Fios-interview1","4.ios\u002F01.ios-interview1","i-lucide-sparkles",{"title":121,"path":122,"stem":123,"icon":124},"设置启动图","\u002Fios\u002Fset-launch-screen","4.ios\u002F02.set-launch-screen","i-lucide-image",{"title":126,"path":127,"stem":128,"icon":48},"路由管理","\u002Fios\u002Frouting","4.ios\u002F03.routing",{"title":130,"path":131,"stem":132,"icon":91},"状态管理","\u002Fios\u002Fstate-management","4.ios\u002F04.state-management",{"title":134,"path":135,"stem":136,"icon":137},"事件传递","\u002Fios\u002Fevent-delivery","4.ios\u002F05.event-delivery","i-lucide-pointer",{"title":139,"path":140,"stem":141,"children":142,"icon":144},"Flutter","\u002Fflutter","5.flutter\u002Findex",[143],{"title":139,"path":140,"stem":141,"icon":144},"i-simple-icons-flutter",{"title":146,"icon":147,"path":148,"stem":149,"children":150,"page":160},"面试","i-lucide-graduation-cap","\u002Finterview","6.interview",[151,156],{"title":152,"path":153,"stem":154,"icon":155},"Flutter面试题1","\u002Finterview\u002Fflutter-interview1","6.interview\u002F01.flutter-interview1","i-lucide-boxes",{"title":157,"path":158,"stem":159,"icon":66},"Flutter面试题2","\u002Finterview\u002Fflutter-interview2","6.interview\u002F02.flutter-interview2",false,{"title":162,"icon":163,"path":164,"stem":165,"children":166},"算法学习","i-lucide-binary","\u002Falgorithm","7.algorithm",[167,169],{"title":162,"path":164,"stem":168,"icon":163},"7.algorithm\u002Findex",{"title":170,"path":171,"stem":172},"算法基础1：复杂度分析","\u002Falgorithm\u002Ftime-space-complexity","7.algorithm\u002F01.time-space-complexity",{"id":174,"title":170,"body":175,"description":13046,"extension":13047,"links":13048,"meta":13049,"navigation":388,"path":171,"seo":13055,"stem":172,"__hash__":13056},"docs\u002F7.algorithm\u002F01.time-space-complexity.md",{"type":176,"value":177,"toc":13030},"minimark",[178,182,186,189,192,209,212,222,225,228,231,238,241,736,739,747,750,753,758,764,767,772,775,778,794,797,814,827,830,1378,1381,1405,1412,1429,1435,1444,1451,1454,1547,1550,1567,1570,2957,2960,2963,2966,2969,2972,3118,3121,3140,3143,3148,3151,3379,3385,3389,3395,3817,3820,3825,3828,3833,3836,3841,3847,3873,3878,3882,3885,4325,4329,4332,5904,5908,5911,6816,6820,6823,7887,7891,7904,8265,8269,8272,9639,9642,9645,9648,10264,10274,10291,10369,10386,10389,10422,10425,10428,10460,10463,10481,10493,10572,10575,10578,10595,10599,10602,10605,10608,10619,10622,10629,10632,10645,10648,11102,11108,11126,11129,11132,11142,11150,11243,11246,11252,11269,11291,11294,11300,11303,11308,11316,11324,11646,11665,11671,11683,12112,12121,12124,12154,12174,12186,12192,12209,12928,12946,12964,12967,12970,13000,13026],[179,180,181],"h2",{"id":181},"什么是算法复杂度",[183,184,185],"p",{},"算法（Algorithm）是用来操作数据、解决程序问题的一组方法。",[183,187,188],{},"对于同一个程序问题，使用不同的算法，也许最终得到的结果一样，但是程序执行过程中消耗的资源和时间却会有很大的区别。",[183,190,191],{},"我们通常从两个维度衡量算法的效率：",[193,194,195,203],"ul",{},[196,197,198,202],"li",{},[199,200,201],"strong",{},"时间复杂度（Time Complexity）","：程序执行算法所消耗的时间。",[196,204,205,208],{},[199,206,207],{},"空间复杂度（Space Complexity）","：程序执行算法所需要占用的额外内存空间。",[183,210,211],{},"然而，时间和空间往往不能同时做到最优，所以需要根据场景取舍。",[213,214,216,217,221],"note",{"title":215},"先记住这件事","复杂度关注的是输入规模 ",[218,219,220],"code",{},"n"," 变大时，资源消耗如何增长，而不是某台机器上的一次实测耗时。",[179,223,224],{"id":224},"时间复杂度",[183,226,227],{},"时间复杂度描述程序运行算法所需要的时间。运行时间越短，通常意味着效率越高。",[183,229,230],{},"我们来学习如何计算这个时间复杂度，很多人想的是把这个算法程序运行然后计算时间即可，但是我们得考虑运行环境，比如在不同配置的电脑上运行结果相差很大。",[183,232,233,234,237],{},"为了便于分析，假设每一行代码的运行时间都为 ",[218,235,236],{},"1 Btime","，那么算法的总运行时间就等于代码执行次数的总和。",[183,239,240],{},"下面我们来看一下这段代码（提供了各种语言的例子）：",[242,243,244,341,435,529,634],"code-group",{},[245,246,252],"pre",{"className":247,"code":248,"filename":249,"language":250,"meta":251,"style":251},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","def dogeggs_sum (n):\n  sum = 0\n    \n  for dogegg in range(n):\n    sum += dogegg\n  return sum\n","Python","python","",[218,253,254,277,290,297,320,332],{"__ignoreMap":251},[255,256,259,263,267,271,274],"span",{"class":257,"line":258},"line",1,[255,260,262],{"class":261},"spNyl","def",[255,264,266],{"class":265},"s2Zo4"," dogeggs_sum",[255,268,270],{"class":269},"sMK4o"," (",[255,272,220],{"class":273},"sHdIc",[255,275,276],{"class":269},"):\n",[255,278,280,283,286],{"class":257,"line":279},2,[255,281,282],{"class":265},"  sum",[255,284,285],{"class":269}," =",[255,287,289],{"class":288},"sbssI"," 0\n",[255,291,293],{"class":257,"line":292},3,[255,294,296],{"class":295},"sTEyZ","    \n",[255,298,300,304,307,310,313,316,318],{"class":257,"line":299},4,[255,301,303],{"class":302},"s7zQu","  for",[255,305,306],{"class":295}," dogegg ",[255,308,309],{"class":302},"in",[255,311,312],{"class":265}," range",[255,314,315],{"class":269},"(",[255,317,220],{"class":265},[255,319,276],{"class":269},[255,321,323,326,329],{"class":257,"line":322},5,[255,324,325],{"class":265},"    sum",[255,327,328],{"class":269}," +=",[255,330,331],{"class":295}," dogegg\n",[255,333,335,338],{"class":257,"line":334},6,[255,336,337],{"class":302},"  return",[255,339,340],{"class":265}," sum\n",[245,342,347],{"className":343,"code":344,"filename":345,"language":346,"meta":251,"style":251},"language-kotlin shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","fun dogeggs_sum(n: Int): Int {\n    var sum = 0\n\n    for (dogegg in 0 until n) {\n        sum += dogegg\n    }\n    return sum\n}\n","Kotlin","kotlin",[218,348,349,371,384,390,406,416,421,429],{"__ignoreMap":251},[255,350,351,354,356,359,363,366,368],{"class":257,"line":258},[255,352,353],{"class":269},"fun",[255,355,266],{"class":265},[255,357,358],{"class":295},"(n: ",[255,360,362],{"class":361},"sBMFI","Int",[255,364,365],{"class":295},"): ",[255,367,362],{"class":361},[255,369,370],{"class":295}," {\n",[255,372,373,376,379,382],{"class":257,"line":279},[255,374,375],{"class":269},"    var",[255,377,378],{"class":295}," sum ",[255,380,381],{"class":269},"=",[255,383,289],{"class":288},[255,385,386],{"class":257,"line":292},[255,387,389],{"emptyLinePlaceholder":388},true,"\n",[255,391,392,395,398,400,403],{"class":257,"line":299},[255,393,394],{"class":302},"    for",[255,396,397],{"class":295}," (dogegg ",[255,399,309],{"class":269},[255,401,402],{"class":288}," 0",[255,404,405],{"class":295}," until n) {\n",[255,407,408,411,414],{"class":257,"line":322},[255,409,410],{"class":295},"        sum ",[255,412,413],{"class":269},"+=",[255,415,331],{"class":295},[255,417,418],{"class":257,"line":334},[255,419,420],{"class":295},"    }\n",[255,422,424,427],{"class":257,"line":423},7,[255,425,426],{"class":302},"    return",[255,428,340],{"class":295},[255,430,432],{"class":257,"line":431},8,[255,433,434],{"class":295},"}\n",[245,436,441],{"className":437,"code":438,"filename":439,"language":440,"meta":251,"style":251},"language-swift shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","func dogeggs_sum(_ n: Int) -> Int {\n    var sum = 0\n\n    for dogegg in 0..\u003Cn {\n        sum += dogegg\n    }\n    return sum\n}\n","Swift","swift",[218,442,443,474,484,488,507,515,519,525],{"__ignoreMap":251},[255,444,445,448,450,452,455,458,461,463,466,469,472],{"class":257,"line":258},[255,446,447],{"class":261},"func",[255,449,266],{"class":265},[255,451,315],{"class":269},[255,453,454],{"class":265},"_",[255,456,457],{"class":273}," n",[255,459,460],{"class":295},": ",[255,462,362],{"class":361},[255,464,465],{"class":269},")",[255,467,468],{"class":269}," ->",[255,470,471],{"class":361}," Int",[255,473,370],{"class":269},[255,475,476,478,480,482],{"class":257,"line":279},[255,477,375],{"class":288},[255,479,378],{"class":295},[255,481,381],{"class":269},[255,483,289],{"class":288},[255,485,486],{"class":257,"line":292},[255,487,389],{"emptyLinePlaceholder":388},[255,489,490,492,494,496,498,501,504],{"class":257,"line":299},[255,491,394],{"class":302},[255,493,306],{"class":295},[255,495,309],{"class":302},[255,497,402],{"class":288},[255,499,500],{"class":269},"..\u003C",[255,502,503],{"class":295},"n ",[255,505,506],{"class":269},"{\n",[255,508,509,511,513],{"class":257,"line":322},[255,510,410],{"class":295},[255,512,413],{"class":269},[255,514,331],{"class":295},[255,516,517],{"class":257,"line":334},[255,518,420],{"class":269},[255,520,521,523],{"class":257,"line":423},[255,522,426],{"class":302},[255,524,340],{"class":295},[255,526,527],{"class":257,"line":431},[255,528,434],{"class":269},[245,530,535],{"className":531,"code":532,"filename":533,"language":534,"meta":251,"style":251},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","int dogeggs_sum(int n) {\n  var sum = 0;\n\n  for (var dogegg = 0; dogegg \u003C n; dogegg++) {\n    sum += dogegg;\n  }\n  return sum;\n}\n","Dart","dart",[218,536,537,551,565,569,605,616,621,630],{"__ignoreMap":251},[255,538,539,542,544,546,548],{"class":257,"line":258},[255,540,541],{"class":361},"int",[255,543,266],{"class":265},[255,545,315],{"class":295},[255,547,541],{"class":361},[255,549,550],{"class":295}," n) {\n",[255,552,553,556,558,560,562],{"class":257,"line":279},[255,554,555],{"class":261},"  var",[255,557,378],{"class":295},[255,559,381],{"class":269},[255,561,402],{"class":288},[255,563,564],{"class":269},";\n",[255,566,567],{"class":257,"line":292},[255,568,389],{"emptyLinePlaceholder":388},[255,570,571,573,575,578,580,582,584,587,589,592,594,596,599,602],{"class":257,"line":299},[255,572,303],{"class":302},[255,574,270],{"class":295},[255,576,577],{"class":261},"var",[255,579,306],{"class":295},[255,581,381],{"class":269},[255,583,402],{"class":288},[255,585,586],{"class":269},";",[255,588,306],{"class":295},[255,590,591],{"class":269},"\u003C",[255,593,457],{"class":295},[255,595,586],{"class":269},[255,597,598],{"class":295}," dogegg",[255,600,601],{"class":269},"++",[255,603,604],{"class":295},") {\n",[255,606,607,610,612,614],{"class":257,"line":322},[255,608,609],{"class":295},"    sum ",[255,611,413],{"class":269},[255,613,598],{"class":295},[255,615,564],{"class":269},[255,617,618],{"class":257,"line":334},[255,619,620],{"class":295},"  }\n",[255,622,623,625,628],{"class":257,"line":423},[255,624,337],{"class":302},[255,626,627],{"class":295}," sum",[255,629,564],{"class":269},[255,631,632],{"class":257,"line":431},[255,633,434],{"class":295},[245,635,640],{"className":636,"code":637,"filename":638,"language":639,"meta":251,"style":251},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function dogeggs_sum(n) {\n  let sum = 0;\n\n  for (let dogegg = 0; dogegg \u003C n; dogegg++) {\n    sum += dogegg;\n  }\n  return sum;\n}\n","JavaScript","js",[218,641,642,657,670,674,710,720,724,732],{"__ignoreMap":251},[255,643,644,647,649,651,653,655],{"class":257,"line":258},[255,645,646],{"class":261},"function",[255,648,266],{"class":265},[255,650,315],{"class":269},[255,652,220],{"class":273},[255,654,465],{"class":269},[255,656,370],{"class":269},[255,658,659,662,664,666,668],{"class":257,"line":279},[255,660,661],{"class":261},"  let",[255,663,627],{"class":295},[255,665,285],{"class":269},[255,667,402],{"class":288},[255,669,564],{"class":269},[255,671,672],{"class":257,"line":292},[255,673,389],{"emptyLinePlaceholder":388},[255,675,676,678,681,684,686,688,690,692,694,697,699,701,703,705,708],{"class":257,"line":299},[255,677,303],{"class":302},[255,679,270],{"class":680},"swJcz",[255,682,683],{"class":261},"let",[255,685,598],{"class":295},[255,687,285],{"class":269},[255,689,402],{"class":288},[255,691,586],{"class":269},[255,693,598],{"class":295},[255,695,696],{"class":269}," \u003C",[255,698,457],{"class":295},[255,700,586],{"class":269},[255,702,598],{"class":295},[255,704,601],{"class":269},[255,706,707],{"class":680},") ",[255,709,506],{"class":269},[255,711,712,714,716,718],{"class":257,"line":322},[255,713,325],{"class":295},[255,715,328],{"class":269},[255,717,598],{"class":295},[255,719,564],{"class":269},[255,721,722],{"class":257,"line":334},[255,723,620],{"class":269},[255,725,726,728,730],{"class":257,"line":423},[255,727,337],{"class":302},[255,729,627],{"class":295},[255,731,564],{"class":269},[255,733,734],{"class":257,"line":431},[255,735,434],{"class":269},[183,737,738],{},"在上面的假设下，这段累加求和代码的总运行时间是多少呢？",[193,740,741,744],{},[196,742,743],{},"第二行代码需要 1 Btime 的运行时间，赋值操作。",[196,745,746],{},"第四和第五行代码分别运行了n次，所以这两行各需要n * Btime的运行时间。",[183,748,749],{},"所以总的运行时间就是 (1+2n) * Btime。",[183,751,752],{},"我们一般用 T 函数来表示总运行时间，所以上面总的运行时间就可以表达为：",[193,754,755],{},[196,756,757],{},"T(n) = (1+2n)*Btime。",[183,759,760,761,763],{},"这里用 ",[218,762,220],{}," 表示数据量，也可以把它理解为数据集的规模或函数参数。",[183,765,766],{},"通过上面公式，我们发现T(n)和代码执行行数（次数）成正比关系，发现这个规律很重要，因为这告诉我们数据量和运行时间之间有正向趋势！",[768,769,771],"h3",{"id":770},"大-o-表示法","大 $O$ 表示法",[183,773,774],{},"大 $O$ 表示法不是用来精确计算算法的运行时间，而是用来表示增长趋势：",[183,776,777],{},"$$\nT(n) = O(f(n))\n$$",[183,779,780,782,783,786,787,786,790,793],{},[218,781,220],{}," 作为数据量大小，可以取 ",[218,784,785],{},"1","、",[218,788,789],{},"100",[218,791,792],{},"10000"," 甚至更大的数。当数据量越来越大时，代码中的某些部分对增长趋势的影响会逐渐变小。",[183,795,796],{},"还是以上面代码为例，当n=1000时，1+2n = 2001；当n=10000时，1+2n=20001，当n持续增大时，常数1和系数2对于最后的结果越来越没存在感了，即对趋势的变化影响不大。",[183,798,799,800,802,803,806,807,810,811,813],{},"这里常数 ",[218,801,785],{}," 的影响很容易理解，但系数 ",[218,804,805],{},"2"," 常常让人困惑：明明 ",[218,808,809],{},"2n"," 看起来比 ",[218,812,220],{}," 大很多，为什么也可以忽略？",[183,815,816,817,819,820,822,823,826],{},"大 $O$ 不是用来比较 ",[218,818,809],{}," 和 ",[218,821,220],{}," 谁在某个具体输入下更快，\n它是用来区分：",[199,824,825],{},"当 n 越来越大时，总量是以什么形式暴涨","，如果还不懂，在下面我们会进一步解释。",[183,828,829],{},"看完下面两段代码进一步学习一下求时间复杂度。",[242,831,832,915,1010,1115,1244],{},[245,833,835],{"className":247,"code":834,"filename":249,"language":250,"meta":251,"style":251},"def dogeggs_sum (n):\n  sum = 0\n\n  for dogegg in range(n):\n    for i in range(n):\n      sum += dogegg * i\n  return sum\n",[218,836,837,849,857,861,877,894,909],{"__ignoreMap":251},[255,838,839,841,843,845,847],{"class":257,"line":258},[255,840,262],{"class":261},[255,842,266],{"class":265},[255,844,270],{"class":269},[255,846,220],{"class":273},[255,848,276],{"class":269},[255,850,851,853,855],{"class":257,"line":279},[255,852,282],{"class":265},[255,854,285],{"class":269},[255,856,289],{"class":288},[255,858,859],{"class":257,"line":292},[255,860,389],{"emptyLinePlaceholder":388},[255,862,863,865,867,869,871,873,875],{"class":257,"line":299},[255,864,303],{"class":302},[255,866,306],{"class":295},[255,868,309],{"class":302},[255,870,312],{"class":265},[255,872,315],{"class":269},[255,874,220],{"class":265},[255,876,276],{"class":269},[255,878,879,881,884,886,888,890,892],{"class":257,"line":322},[255,880,394],{"class":302},[255,882,883],{"class":295}," i ",[255,885,309],{"class":302},[255,887,312],{"class":265},[255,889,315],{"class":269},[255,891,220],{"class":265},[255,893,276],{"class":269},[255,895,896,899,901,903,906],{"class":257,"line":334},[255,897,898],{"class":265},"      sum",[255,900,328],{"class":269},[255,902,306],{"class":295},[255,904,905],{"class":269},"*",[255,907,908],{"class":295}," i\n",[255,910,911,913],{"class":257,"line":423},[255,912,337],{"class":302},[255,914,340],{"class":265},[245,916,918],{"className":343,"code":917,"filename":345,"language":346,"meta":251,"style":251},"fun dogeggs_sum(n: Int): Int {\n    var sum = 0\n\n    for (dogegg in 0 until n) {\n        for (i in 0 until n) {\n            sum += dogegg * i\n        }\n    }\n    return sum\n}\n",[218,919,920,936,946,950,962,976,989,994,998,1005],{"__ignoreMap":251},[255,921,922,924,926,928,930,932,934],{"class":257,"line":258},[255,923,353],{"class":269},[255,925,266],{"class":265},[255,927,358],{"class":295},[255,929,362],{"class":361},[255,931,365],{"class":295},[255,933,362],{"class":361},[255,935,370],{"class":295},[255,937,938,940,942,944],{"class":257,"line":279},[255,939,375],{"class":269},[255,941,378],{"class":295},[255,943,381],{"class":269},[255,945,289],{"class":288},[255,947,948],{"class":257,"line":292},[255,949,389],{"emptyLinePlaceholder":388},[255,951,952,954,956,958,960],{"class":257,"line":299},[255,953,394],{"class":302},[255,955,397],{"class":295},[255,957,309],{"class":269},[255,959,402],{"class":288},[255,961,405],{"class":295},[255,963,964,967,970,972,974],{"class":257,"line":322},[255,965,966],{"class":302},"        for",[255,968,969],{"class":295}," (i ",[255,971,309],{"class":269},[255,973,402],{"class":288},[255,975,405],{"class":295},[255,977,978,981,983,985,987],{"class":257,"line":334},[255,979,980],{"class":295},"            sum ",[255,982,413],{"class":269},[255,984,306],{"class":295},[255,986,905],{"class":269},[255,988,908],{"class":295},[255,990,991],{"class":257,"line":423},[255,992,993],{"class":295},"        }\n",[255,995,996],{"class":257,"line":431},[255,997,420],{"class":295},[255,999,1001,1003],{"class":257,"line":1000},9,[255,1002,426],{"class":302},[255,1004,340],{"class":295},[255,1006,1008],{"class":257,"line":1007},10,[255,1009,434],{"class":295},[245,1011,1013],{"className":437,"code":1012,"filename":439,"language":440,"meta":251,"style":251},"func dogeggs_sum(_ n: Int) -> Int {\n    var sum = 0\n\n    for dogegg in 0..\u003Cn {\n        for i in 0..\u003Cn {\n            sum += dogegg * i\n        }\n    }\n    return sum\n}\n",[218,1014,1015,1039,1049,1053,1069,1085,1097,1101,1105,1111],{"__ignoreMap":251},[255,1016,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037],{"class":257,"line":258},[255,1018,447],{"class":261},[255,1020,266],{"class":265},[255,1022,315],{"class":269},[255,1024,454],{"class":265},[255,1026,457],{"class":273},[255,1028,460],{"class":295},[255,1030,362],{"class":361},[255,1032,465],{"class":269},[255,1034,468],{"class":269},[255,1036,471],{"class":361},[255,1038,370],{"class":269},[255,1040,1041,1043,1045,1047],{"class":257,"line":279},[255,1042,375],{"class":288},[255,1044,378],{"class":295},[255,1046,381],{"class":269},[255,1048,289],{"class":288},[255,1050,1051],{"class":257,"line":292},[255,1052,389],{"emptyLinePlaceholder":388},[255,1054,1055,1057,1059,1061,1063,1065,1067],{"class":257,"line":299},[255,1056,394],{"class":302},[255,1058,306],{"class":295},[255,1060,309],{"class":302},[255,1062,402],{"class":288},[255,1064,500],{"class":269},[255,1066,503],{"class":295},[255,1068,506],{"class":269},[255,1070,1071,1073,1075,1077,1079,1081,1083],{"class":257,"line":322},[255,1072,966],{"class":302},[255,1074,883],{"class":295},[255,1076,309],{"class":302},[255,1078,402],{"class":288},[255,1080,500],{"class":269},[255,1082,503],{"class":295},[255,1084,506],{"class":269},[255,1086,1087,1089,1091,1093,1095],{"class":257,"line":334},[255,1088,980],{"class":295},[255,1090,413],{"class":269},[255,1092,306],{"class":295},[255,1094,905],{"class":269},[255,1096,908],{"class":295},[255,1098,1099],{"class":257,"line":423},[255,1100,993],{"class":269},[255,1102,1103],{"class":257,"line":431},[255,1104,420],{"class":269},[255,1106,1107,1109],{"class":257,"line":1000},[255,1108,426],{"class":302},[255,1110,340],{"class":295},[255,1112,1113],{"class":257,"line":1007},[255,1114,434],{"class":269},[245,1116,1118],{"className":531,"code":1117,"filename":533,"language":534,"meta":251,"style":251},"int dogeggs_sum(int n) {\n  var sum = 0;\n\n  for (var dogegg = 0; dogegg \u003C n; dogegg++) {\n    for (var i = 0; i \u003C n; i++) {\n      sum += dogegg * i;\n    }\n  }\n  return sum;\n}\n",[218,1119,1120,1132,1144,1148,1178,1209,1224,1228,1232,1240],{"__ignoreMap":251},[255,1121,1122,1124,1126,1128,1130],{"class":257,"line":258},[255,1123,541],{"class":361},[255,1125,266],{"class":265},[255,1127,315],{"class":295},[255,1129,541],{"class":361},[255,1131,550],{"class":295},[255,1133,1134,1136,1138,1140,1142],{"class":257,"line":279},[255,1135,555],{"class":261},[255,1137,378],{"class":295},[255,1139,381],{"class":269},[255,1141,402],{"class":288},[255,1143,564],{"class":269},[255,1145,1146],{"class":257,"line":292},[255,1147,389],{"emptyLinePlaceholder":388},[255,1149,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176],{"class":257,"line":299},[255,1151,303],{"class":302},[255,1153,270],{"class":295},[255,1155,577],{"class":261},[255,1157,306],{"class":295},[255,1159,381],{"class":269},[255,1161,402],{"class":288},[255,1163,586],{"class":269},[255,1165,306],{"class":295},[255,1167,591],{"class":269},[255,1169,457],{"class":295},[255,1171,586],{"class":269},[255,1173,598],{"class":295},[255,1175,601],{"class":269},[255,1177,604],{"class":295},[255,1179,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1205,1207],{"class":257,"line":322},[255,1181,394],{"class":302},[255,1183,270],{"class":295},[255,1185,577],{"class":261},[255,1187,883],{"class":295},[255,1189,381],{"class":269},[255,1191,402],{"class":288},[255,1193,586],{"class":269},[255,1195,883],{"class":295},[255,1197,591],{"class":269},[255,1199,457],{"class":295},[255,1201,586],{"class":269},[255,1203,1204],{"class":295}," i",[255,1206,601],{"class":269},[255,1208,604],{"class":295},[255,1210,1211,1214,1216,1218,1220,1222],{"class":257,"line":334},[255,1212,1213],{"class":295},"      sum ",[255,1215,413],{"class":269},[255,1217,306],{"class":295},[255,1219,905],{"class":269},[255,1221,1204],{"class":295},[255,1223,564],{"class":269},[255,1225,1226],{"class":257,"line":423},[255,1227,420],{"class":295},[255,1229,1230],{"class":257,"line":431},[255,1231,620],{"class":295},[255,1233,1234,1236,1238],{"class":257,"line":1000},[255,1235,337],{"class":302},[255,1237,627],{"class":295},[255,1239,564],{"class":269},[255,1241,1242],{"class":257,"line":1007},[255,1243,434],{"class":295},[245,1245,1247],{"className":636,"code":1246,"filename":638,"language":639,"meta":251,"style":251},"function dogeggs_sum(n) {\n  let sum = 0;\n\n  for (let dogegg = 0; dogegg \u003C n; dogegg++) {\n    for (let i = 0; i \u003C n; i++) {\n      sum += dogegg * i;\n    }\n  }\n  return sum;\n}\n",[218,1248,1249,1263,1275,1279,1311,1343,1358,1362,1366,1374],{"__ignoreMap":251},[255,1250,1251,1253,1255,1257,1259,1261],{"class":257,"line":258},[255,1252,646],{"class":261},[255,1254,266],{"class":265},[255,1256,315],{"class":269},[255,1258,220],{"class":273},[255,1260,465],{"class":269},[255,1262,370],{"class":269},[255,1264,1265,1267,1269,1271,1273],{"class":257,"line":279},[255,1266,661],{"class":261},[255,1268,627],{"class":295},[255,1270,285],{"class":269},[255,1272,402],{"class":288},[255,1274,564],{"class":269},[255,1276,1277],{"class":257,"line":292},[255,1278,389],{"emptyLinePlaceholder":388},[255,1280,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309],{"class":257,"line":299},[255,1282,303],{"class":302},[255,1284,270],{"class":680},[255,1286,683],{"class":261},[255,1288,598],{"class":295},[255,1290,285],{"class":269},[255,1292,402],{"class":288},[255,1294,586],{"class":269},[255,1296,598],{"class":295},[255,1298,696],{"class":269},[255,1300,457],{"class":295},[255,1302,586],{"class":269},[255,1304,598],{"class":295},[255,1306,601],{"class":269},[255,1308,707],{"class":680},[255,1310,506],{"class":269},[255,1312,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341],{"class":257,"line":322},[255,1314,394],{"class":302},[255,1316,270],{"class":680},[255,1318,683],{"class":261},[255,1320,1204],{"class":295},[255,1322,285],{"class":269},[255,1324,402],{"class":288},[255,1326,586],{"class":269},[255,1328,1204],{"class":295},[255,1330,696],{"class":269},[255,1332,457],{"class":295},[255,1334,586],{"class":269},[255,1336,1204],{"class":295},[255,1338,601],{"class":269},[255,1340,707],{"class":680},[255,1342,506],{"class":269},[255,1344,1345,1347,1349,1351,1354,1356],{"class":257,"line":334},[255,1346,898],{"class":295},[255,1348,328],{"class":269},[255,1350,598],{"class":295},[255,1352,1353],{"class":269}," *",[255,1355,1204],{"class":295},[255,1357,564],{"class":269},[255,1359,1360],{"class":257,"line":423},[255,1361,420],{"class":269},[255,1363,1364],{"class":257,"line":431},[255,1365,620],{"class":269},[255,1367,1368,1370,1372],{"class":257,"line":1000},[255,1369,337],{"class":302},[255,1371,627],{"class":295},[255,1373,564],{"class":269},[255,1375,1376],{"class":257,"line":1007},[255,1377,434],{"class":269},[183,1379,1380],{},"我们一步步来计算时间复杂度。",[193,1382,1383,1389,1394,1400],{},[196,1384,1385,1386,1388],{},"第二行代码需要运行 ",[218,1387,785],{}," 次。",[196,1390,1391,1392,1388],{},"第四行代码需要运行 ",[218,1393,220],{},[196,1395,1396,1397,1388],{},"第五行代码需要运行 ",[218,1398,1399],{},"n²",[196,1401,1402,1403,1388],{},"第六行代码也需要运行 ",[218,1404,1399],{},[183,1406,1407,1408,1411],{},"所以总的运行次数为 ",[218,1409,1410],{},"f(n) = 1 + n + 2n²","。",[183,1413,1414,1415,1418,1419,1422,1423,1418,1426,1411],{},"当 ",[218,1416,1417],{},"n = 5"," 时，",[218,1420,1421],{},"f(n) = 1 + 5 + 2 × 25","。\n当 ",[218,1424,1425],{},"n = 10000",[218,1427,1428],{},"f(n) = 1 + 10000 + 2 × 100000000",[183,1430,1431,1432,1434],{},"注意到了吗？很明显可以看出，",[218,1433,1399],{}," 对程序运行次数起到了决定性作用。",[183,1436,1437,1438,1440,1441,1443],{},"反倒是常数 ",[218,1439,785],{}," 和系数 ",[218,1442,805],{}," 对最终趋势影响不大，可以忽略。因此：",[1445,1446,1447,1448,1450],"tip",{},"分析一段代码的时间复杂度时，优先找出执行次数随 ",[218,1449,220],{}," 增长最快的那一段代码。",[183,1452,1453],{},"所以得到下面的结果：",[1455,1456,1457,1488],"table",{},[1458,1459,1460],"thead",{},[1461,1462,1463,1467,1470,1475,1480,1485],"tr",{},[1464,1465,1466],"th",{},"表达式",[1464,1468,1469],{},"大 $O$ 类型",[1464,1471,1472],{},[218,1473,1474],{},"n = 10",[1464,1476,1477],{},[218,1478,1479],{},"n = 100",[1464,1481,1482],{},[218,1483,1484],{},"n = 1000",[1464,1486,1487],{},"特点",[1489,1490,1491,1520],"tbody",{},[1461,1492,1493,1499,1505,1508,1511,1514],{},[1494,1495,1496],"td",{},[218,1497,1498],{},"1 + 2n",[1494,1500,1501,1504],{},[218,1502,1503],{},"O(n)"," 线性",[1494,1506,1507],{},"21",[1494,1509,1510],{},"201",[1494,1512,1513],{},"2001",[1494,1515,1516,1517,1519],{},"随 ",[218,1518,220],{}," 等比例增长",[1461,1521,1522,1527,1533,1536,1539,1542],{},[1494,1523,1524],{},[218,1525,1526],{},"1 + n + 2n²",[1494,1528,1529,1532],{},[218,1530,1531],{},"O(n²)"," 平方",[1494,1534,1535],{},"211",[1494,1537,1538],{},"20101",[1494,1540,1541],{},"2001001",[1494,1543,1516,1544,1546],{},[218,1545,220],{}," 平方增长",[183,1548,1549],{},"大 $O$ 时间复杂度并不具体表示代码真正的执行时间，而是表示代码执行时间随数据规模增长的变化趋势。复杂度分析通常遵循以下原则：",[193,1551,1552,1561],{},[196,1553,1554,1555,819,1557,1560],{},"复杂度与具体的常系数无关，例如 ",[218,1556,1503],{},[218,1558,1559],{},"O(2n)"," 表示同样的复杂度。",[196,1562,1563,1564,1411],{},"多项式复杂度相加时，保留增长更快的项，例如 ",[218,1565,1566],{},"O(n²) + O(n) = O(n²)",[183,1568,1569],{},"我们再看下面代码：",[242,1571,1572,1795,2021,2266,2606],{},[245,1573,1575],{"className":247,"code":1574,"filename":249,"language":250,"meta":251,"style":251},"def dogeggs_sum (n):\n    sum1 = 0\n    for dogegg1 in range(n):\n        sum1 += dogegg1\n\n    sum2 = 0\n    for dogegg2 in range(n):\n        for i in range(n):\n            sum2 += dogegg2 * i\n\n    sum3 = 0\n    for dogegg3 in range(n):\n        for i in range(n):\n            for j in range(n):\n                sum3 += dogegg3 * i * j\n\n    return sum1 + sum2 + sum3\n",[218,1576,1577,1589,1598,1615,1625,1629,1638,1655,1671,1684,1688,1698,1716,1733,1752,1771,1776],{"__ignoreMap":251},[255,1578,1579,1581,1583,1585,1587],{"class":257,"line":258},[255,1580,262],{"class":261},[255,1582,266],{"class":265},[255,1584,270],{"class":269},[255,1586,220],{"class":273},[255,1588,276],{"class":269},[255,1590,1591,1594,1596],{"class":257,"line":279},[255,1592,1593],{"class":295},"    sum1 ",[255,1595,381],{"class":269},[255,1597,289],{"class":288},[255,1599,1600,1602,1605,1607,1609,1611,1613],{"class":257,"line":292},[255,1601,394],{"class":302},[255,1603,1604],{"class":295}," dogegg1 ",[255,1606,309],{"class":302},[255,1608,312],{"class":265},[255,1610,315],{"class":269},[255,1612,220],{"class":265},[255,1614,276],{"class":269},[255,1616,1617,1620,1622],{"class":257,"line":299},[255,1618,1619],{"class":295},"        sum1 ",[255,1621,413],{"class":269},[255,1623,1624],{"class":295}," dogegg1\n",[255,1626,1627],{"class":257,"line":322},[255,1628,389],{"emptyLinePlaceholder":388},[255,1630,1631,1634,1636],{"class":257,"line":334},[255,1632,1633],{"class":295},"    sum2 ",[255,1635,381],{"class":269},[255,1637,289],{"class":288},[255,1639,1640,1642,1645,1647,1649,1651,1653],{"class":257,"line":423},[255,1641,394],{"class":302},[255,1643,1644],{"class":295}," dogegg2 ",[255,1646,309],{"class":302},[255,1648,312],{"class":265},[255,1650,315],{"class":269},[255,1652,220],{"class":265},[255,1654,276],{"class":269},[255,1656,1657,1659,1661,1663,1665,1667,1669],{"class":257,"line":431},[255,1658,966],{"class":302},[255,1660,883],{"class":295},[255,1662,309],{"class":302},[255,1664,312],{"class":265},[255,1666,315],{"class":269},[255,1668,220],{"class":265},[255,1670,276],{"class":269},[255,1672,1673,1676,1678,1680,1682],{"class":257,"line":1000},[255,1674,1675],{"class":295},"            sum2 ",[255,1677,413],{"class":269},[255,1679,1644],{"class":295},[255,1681,905],{"class":269},[255,1683,908],{"class":295},[255,1685,1686],{"class":257,"line":1007},[255,1687,389],{"emptyLinePlaceholder":388},[255,1689,1691,1694,1696],{"class":257,"line":1690},11,[255,1692,1693],{"class":295},"    sum3 ",[255,1695,381],{"class":269},[255,1697,289],{"class":288},[255,1699,1701,1703,1706,1708,1710,1712,1714],{"class":257,"line":1700},12,[255,1702,394],{"class":302},[255,1704,1705],{"class":295}," dogegg3 ",[255,1707,309],{"class":302},[255,1709,312],{"class":265},[255,1711,315],{"class":269},[255,1713,220],{"class":265},[255,1715,276],{"class":269},[255,1717,1719,1721,1723,1725,1727,1729,1731],{"class":257,"line":1718},13,[255,1720,966],{"class":302},[255,1722,883],{"class":295},[255,1724,309],{"class":302},[255,1726,312],{"class":265},[255,1728,315],{"class":269},[255,1730,220],{"class":265},[255,1732,276],{"class":269},[255,1734,1736,1739,1742,1744,1746,1748,1750],{"class":257,"line":1735},14,[255,1737,1738],{"class":302},"            for",[255,1740,1741],{"class":295}," j ",[255,1743,309],{"class":302},[255,1745,312],{"class":265},[255,1747,315],{"class":269},[255,1749,220],{"class":265},[255,1751,276],{"class":269},[255,1753,1755,1758,1760,1762,1764,1766,1768],{"class":257,"line":1754},15,[255,1756,1757],{"class":295},"                sum3 ",[255,1759,413],{"class":269},[255,1761,1705],{"class":295},[255,1763,905],{"class":269},[255,1765,883],{"class":295},[255,1767,905],{"class":269},[255,1769,1770],{"class":295}," j\n",[255,1772,1774],{"class":257,"line":1773},16,[255,1775,389],{"emptyLinePlaceholder":388},[255,1777,1779,1781,1784,1787,1790,1792],{"class":257,"line":1778},17,[255,1780,426],{"class":302},[255,1782,1783],{"class":295}," sum1 ",[255,1785,1786],{"class":269},"+",[255,1788,1789],{"class":295}," sum2 ",[255,1791,1786],{"class":269},[255,1793,1794],{"class":295}," sum3\n",[245,1796,1798],{"className":343,"code":1797,"filename":345,"language":346,"meta":251,"style":251},"fun dogeggs_sum(n: Int): Int {\n    var sum1 = 0\n    for (dogegg1 in 0 until n) {\n        sum1 += dogegg1\n    }\n\n    var sum2 = 0\n    for (dogegg2 in 0 until n) {\n        for (i in 0 until n) {\n            sum2 += dogegg2 * i\n        }\n    }\n\n    var sum3 = 0\n    for (dogegg3 in 0 until n) {\n        for (i in 0 until n) {\n            for (j in 0 until n) {\n                sum3 += dogegg3 * i * j\n            }\n        }\n    }\n\n    return sum1 + sum2 + sum3\n}\n",[218,1799,1800,1816,1826,1839,1847,1851,1855,1865,1878,1890,1902,1906,1910,1914,1925,1938,1950,1963,1980,1986,1991,1996,2001,2016],{"__ignoreMap":251},[255,1801,1802,1804,1806,1808,1810,1812,1814],{"class":257,"line":258},[255,1803,353],{"class":269},[255,1805,266],{"class":265},[255,1807,358],{"class":295},[255,1809,362],{"class":361},[255,1811,365],{"class":295},[255,1813,362],{"class":361},[255,1815,370],{"class":295},[255,1817,1818,1820,1822,1824],{"class":257,"line":279},[255,1819,375],{"class":269},[255,1821,1783],{"class":295},[255,1823,381],{"class":269},[255,1825,289],{"class":288},[255,1827,1828,1830,1833,1835,1837],{"class":257,"line":292},[255,1829,394],{"class":302},[255,1831,1832],{"class":295}," (dogegg1 ",[255,1834,309],{"class":269},[255,1836,402],{"class":288},[255,1838,405],{"class":295},[255,1840,1841,1843,1845],{"class":257,"line":299},[255,1842,1619],{"class":295},[255,1844,413],{"class":269},[255,1846,1624],{"class":295},[255,1848,1849],{"class":257,"line":322},[255,1850,420],{"class":295},[255,1852,1853],{"class":257,"line":334},[255,1854,389],{"emptyLinePlaceholder":388},[255,1856,1857,1859,1861,1863],{"class":257,"line":423},[255,1858,375],{"class":269},[255,1860,1789],{"class":295},[255,1862,381],{"class":269},[255,1864,289],{"class":288},[255,1866,1867,1869,1872,1874,1876],{"class":257,"line":431},[255,1868,394],{"class":302},[255,1870,1871],{"class":295}," (dogegg2 ",[255,1873,309],{"class":269},[255,1875,402],{"class":288},[255,1877,405],{"class":295},[255,1879,1880,1882,1884,1886,1888],{"class":257,"line":1000},[255,1881,966],{"class":302},[255,1883,969],{"class":295},[255,1885,309],{"class":269},[255,1887,402],{"class":288},[255,1889,405],{"class":295},[255,1891,1892,1894,1896,1898,1900],{"class":257,"line":1007},[255,1893,1675],{"class":295},[255,1895,413],{"class":269},[255,1897,1644],{"class":295},[255,1899,905],{"class":269},[255,1901,908],{"class":295},[255,1903,1904],{"class":257,"line":1690},[255,1905,993],{"class":295},[255,1907,1908],{"class":257,"line":1700},[255,1909,420],{"class":295},[255,1911,1912],{"class":257,"line":1718},[255,1913,389],{"emptyLinePlaceholder":388},[255,1915,1916,1918,1921,1923],{"class":257,"line":1735},[255,1917,375],{"class":269},[255,1919,1920],{"class":295}," sum3 ",[255,1922,381],{"class":269},[255,1924,289],{"class":288},[255,1926,1927,1929,1932,1934,1936],{"class":257,"line":1754},[255,1928,394],{"class":302},[255,1930,1931],{"class":295}," (dogegg3 ",[255,1933,309],{"class":269},[255,1935,402],{"class":288},[255,1937,405],{"class":295},[255,1939,1940,1942,1944,1946,1948],{"class":257,"line":1773},[255,1941,966],{"class":302},[255,1943,969],{"class":295},[255,1945,309],{"class":269},[255,1947,402],{"class":288},[255,1949,405],{"class":295},[255,1951,1952,1954,1957,1959,1961],{"class":257,"line":1778},[255,1953,1738],{"class":302},[255,1955,1956],{"class":295}," (j ",[255,1958,309],{"class":269},[255,1960,402],{"class":288},[255,1962,405],{"class":295},[255,1964,1966,1968,1970,1972,1974,1976,1978],{"class":257,"line":1965},18,[255,1967,1757],{"class":295},[255,1969,413],{"class":269},[255,1971,1705],{"class":295},[255,1973,905],{"class":269},[255,1975,883],{"class":295},[255,1977,905],{"class":269},[255,1979,1770],{"class":295},[255,1981,1983],{"class":257,"line":1982},19,[255,1984,1985],{"class":295},"            }\n",[255,1987,1989],{"class":257,"line":1988},20,[255,1990,993],{"class":295},[255,1992,1994],{"class":257,"line":1993},21,[255,1995,420],{"class":295},[255,1997,1999],{"class":257,"line":1998},22,[255,2000,389],{"emptyLinePlaceholder":388},[255,2002,2004,2006,2008,2010,2012,2014],{"class":257,"line":2003},23,[255,2005,426],{"class":302},[255,2007,1783],{"class":295},[255,2009,1786],{"class":269},[255,2011,1789],{"class":295},[255,2013,1786],{"class":269},[255,2015,1794],{"class":295},[255,2017,2019],{"class":257,"line":2018},24,[255,2020,434],{"class":295},[245,2022,2024],{"className":437,"code":2023,"filename":439,"language":440,"meta":251,"style":251},"func dogeggs_sum(_ n: Int) -> Int {\n    var sum1 = 0\n    for dogegg1 in 0..\u003Cn {\n        sum1 += dogegg1\n    }\n\n    var sum2 = 0\n    for dogegg2 in 0..\u003Cn {\n        for i in 0..\u003Cn {\n            sum2 += dogegg2 * i\n        }\n    }\n\n    var sum3 = 0\n    for dogegg3 in 0..\u003Cn {\n        for i in 0..\u003Cn {\n            for j in 0..\u003Cn {\n                sum3 += dogegg3 * i * j\n            }\n        }\n    }\n\n    return sum1 + sum2 + sum3\n}\n",[218,2025,2026,2050,2060,2076,2084,2088,2092,2102,2118,2134,2146,2150,2154,2158,2168,2184,2200,2216,2232,2236,2240,2244,2248,2262],{"__ignoreMap":251},[255,2027,2028,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048],{"class":257,"line":258},[255,2029,447],{"class":261},[255,2031,266],{"class":265},[255,2033,315],{"class":269},[255,2035,454],{"class":265},[255,2037,457],{"class":273},[255,2039,460],{"class":295},[255,2041,362],{"class":361},[255,2043,465],{"class":269},[255,2045,468],{"class":269},[255,2047,471],{"class":361},[255,2049,370],{"class":269},[255,2051,2052,2054,2056,2058],{"class":257,"line":279},[255,2053,375],{"class":288},[255,2055,1783],{"class":295},[255,2057,381],{"class":269},[255,2059,289],{"class":288},[255,2061,2062,2064,2066,2068,2070,2072,2074],{"class":257,"line":292},[255,2063,394],{"class":302},[255,2065,1604],{"class":295},[255,2067,309],{"class":302},[255,2069,402],{"class":288},[255,2071,500],{"class":269},[255,2073,503],{"class":295},[255,2075,506],{"class":269},[255,2077,2078,2080,2082],{"class":257,"line":299},[255,2079,1619],{"class":295},[255,2081,413],{"class":269},[255,2083,1624],{"class":295},[255,2085,2086],{"class":257,"line":322},[255,2087,420],{"class":269},[255,2089,2090],{"class":257,"line":334},[255,2091,389],{"emptyLinePlaceholder":388},[255,2093,2094,2096,2098,2100],{"class":257,"line":423},[255,2095,375],{"class":288},[255,2097,1789],{"class":295},[255,2099,381],{"class":269},[255,2101,289],{"class":288},[255,2103,2104,2106,2108,2110,2112,2114,2116],{"class":257,"line":431},[255,2105,394],{"class":302},[255,2107,1644],{"class":295},[255,2109,309],{"class":302},[255,2111,402],{"class":288},[255,2113,500],{"class":269},[255,2115,503],{"class":295},[255,2117,506],{"class":269},[255,2119,2120,2122,2124,2126,2128,2130,2132],{"class":257,"line":1000},[255,2121,966],{"class":302},[255,2123,883],{"class":295},[255,2125,309],{"class":302},[255,2127,402],{"class":288},[255,2129,500],{"class":269},[255,2131,503],{"class":295},[255,2133,506],{"class":269},[255,2135,2136,2138,2140,2142,2144],{"class":257,"line":1007},[255,2137,1675],{"class":295},[255,2139,413],{"class":269},[255,2141,1644],{"class":295},[255,2143,905],{"class":269},[255,2145,908],{"class":295},[255,2147,2148],{"class":257,"line":1690},[255,2149,993],{"class":269},[255,2151,2152],{"class":257,"line":1700},[255,2153,420],{"class":269},[255,2155,2156],{"class":257,"line":1718},[255,2157,389],{"emptyLinePlaceholder":388},[255,2159,2160,2162,2164,2166],{"class":257,"line":1735},[255,2161,375],{"class":288},[255,2163,1920],{"class":295},[255,2165,381],{"class":269},[255,2167,289],{"class":288},[255,2169,2170,2172,2174,2176,2178,2180,2182],{"class":257,"line":1754},[255,2171,394],{"class":302},[255,2173,1705],{"class":295},[255,2175,309],{"class":302},[255,2177,402],{"class":288},[255,2179,500],{"class":269},[255,2181,503],{"class":295},[255,2183,506],{"class":269},[255,2185,2186,2188,2190,2192,2194,2196,2198],{"class":257,"line":1773},[255,2187,966],{"class":302},[255,2189,883],{"class":295},[255,2191,309],{"class":302},[255,2193,402],{"class":288},[255,2195,500],{"class":269},[255,2197,503],{"class":295},[255,2199,506],{"class":269},[255,2201,2202,2204,2206,2208,2210,2212,2214],{"class":257,"line":1778},[255,2203,1738],{"class":302},[255,2205,1741],{"class":295},[255,2207,309],{"class":302},[255,2209,402],{"class":288},[255,2211,500],{"class":269},[255,2213,503],{"class":295},[255,2215,506],{"class":269},[255,2217,2218,2220,2222,2224,2226,2228,2230],{"class":257,"line":1965},[255,2219,1757],{"class":295},[255,2221,413],{"class":269},[255,2223,1705],{"class":295},[255,2225,905],{"class":269},[255,2227,883],{"class":295},[255,2229,905],{"class":269},[255,2231,1770],{"class":295},[255,2233,2234],{"class":257,"line":1982},[255,2235,1985],{"class":269},[255,2237,2238],{"class":257,"line":1988},[255,2239,993],{"class":269},[255,2241,2242],{"class":257,"line":1993},[255,2243,420],{"class":269},[255,2245,2246],{"class":257,"line":1998},[255,2247,389],{"emptyLinePlaceholder":388},[255,2249,2250,2252,2254,2256,2258,2260],{"class":257,"line":2003},[255,2251,426],{"class":302},[255,2253,1783],{"class":295},[255,2255,1786],{"class":269},[255,2257,1789],{"class":295},[255,2259,1786],{"class":269},[255,2261,1794],{"class":295},[255,2263,2264],{"class":257,"line":2018},[255,2265,434],{"class":269},[245,2267,2269],{"className":531,"code":2268,"filename":533,"language":534,"meta":251,"style":251},"int dogeggs_sum(int n) {\n  var sum1 = 0;\n  for (var dogegg1 = 0; dogegg1 \u003C n; dogegg1++) {\n    sum1 += dogegg1;\n  }\n\n  var sum2 = 0;\n  for (var dogegg2 = 0; dogegg2 \u003C n; dogegg2++) {\n    for (var i = 0; i \u003C n; i++) {\n      sum2 += dogegg2 * i;\n    }\n  }\n\n  var sum3 = 0;\n  for (var dogegg3 = 0; dogegg3 \u003C n; dogegg3++) {\n    for (var i = 0; i \u003C n; i++) {\n      for (var j = 0; j \u003C n; j++) {\n        sum3 += dogegg3 * i * j;\n      }\n    }\n  }\n\n  return sum1 + sum2 + sum3;\n}\n",[218,2270,2271,2283,2295,2326,2336,2340,2344,2356,2387,2417,2432,2436,2440,2444,2456,2487,2517,2549,2568,2573,2577,2581,2585,2602],{"__ignoreMap":251},[255,2272,2273,2275,2277,2279,2281],{"class":257,"line":258},[255,2274,541],{"class":361},[255,2276,266],{"class":265},[255,2278,315],{"class":295},[255,2280,541],{"class":361},[255,2282,550],{"class":295},[255,2284,2285,2287,2289,2291,2293],{"class":257,"line":279},[255,2286,555],{"class":261},[255,2288,1783],{"class":295},[255,2290,381],{"class":269},[255,2292,402],{"class":288},[255,2294,564],{"class":269},[255,2296,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2317,2319,2322,2324],{"class":257,"line":292},[255,2298,303],{"class":302},[255,2300,270],{"class":295},[255,2302,577],{"class":261},[255,2304,1604],{"class":295},[255,2306,381],{"class":269},[255,2308,402],{"class":288},[255,2310,586],{"class":269},[255,2312,1604],{"class":295},[255,2314,591],{"class":269},[255,2316,457],{"class":295},[255,2318,586],{"class":269},[255,2320,2321],{"class":295}," dogegg1",[255,2323,601],{"class":269},[255,2325,604],{"class":295},[255,2327,2328,2330,2332,2334],{"class":257,"line":299},[255,2329,1593],{"class":295},[255,2331,413],{"class":269},[255,2333,2321],{"class":295},[255,2335,564],{"class":269},[255,2337,2338],{"class":257,"line":322},[255,2339,620],{"class":295},[255,2341,2342],{"class":257,"line":334},[255,2343,389],{"emptyLinePlaceholder":388},[255,2345,2346,2348,2350,2352,2354],{"class":257,"line":423},[255,2347,555],{"class":261},[255,2349,1789],{"class":295},[255,2351,381],{"class":269},[255,2353,402],{"class":288},[255,2355,564],{"class":269},[255,2357,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2383,2385],{"class":257,"line":431},[255,2359,303],{"class":302},[255,2361,270],{"class":295},[255,2363,577],{"class":261},[255,2365,1644],{"class":295},[255,2367,381],{"class":269},[255,2369,402],{"class":288},[255,2371,586],{"class":269},[255,2373,1644],{"class":295},[255,2375,591],{"class":269},[255,2377,457],{"class":295},[255,2379,586],{"class":269},[255,2381,2382],{"class":295}," dogegg2",[255,2384,601],{"class":269},[255,2386,604],{"class":295},[255,2388,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415],{"class":257,"line":1000},[255,2390,394],{"class":302},[255,2392,270],{"class":295},[255,2394,577],{"class":261},[255,2396,883],{"class":295},[255,2398,381],{"class":269},[255,2400,402],{"class":288},[255,2402,586],{"class":269},[255,2404,883],{"class":295},[255,2406,591],{"class":269},[255,2408,457],{"class":295},[255,2410,586],{"class":269},[255,2412,1204],{"class":295},[255,2414,601],{"class":269},[255,2416,604],{"class":295},[255,2418,2419,2422,2424,2426,2428,2430],{"class":257,"line":1007},[255,2420,2421],{"class":295},"      sum2 ",[255,2423,413],{"class":269},[255,2425,1644],{"class":295},[255,2427,905],{"class":269},[255,2429,1204],{"class":295},[255,2431,564],{"class":269},[255,2433,2434],{"class":257,"line":1690},[255,2435,420],{"class":295},[255,2437,2438],{"class":257,"line":1700},[255,2439,620],{"class":295},[255,2441,2442],{"class":257,"line":1718},[255,2443,389],{"emptyLinePlaceholder":388},[255,2445,2446,2448,2450,2452,2454],{"class":257,"line":1735},[255,2447,555],{"class":261},[255,2449,1920],{"class":295},[255,2451,381],{"class":269},[255,2453,402],{"class":288},[255,2455,564],{"class":269},[255,2457,2458,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480,2483,2485],{"class":257,"line":1754},[255,2459,303],{"class":302},[255,2461,270],{"class":295},[255,2463,577],{"class":261},[255,2465,1705],{"class":295},[255,2467,381],{"class":269},[255,2469,402],{"class":288},[255,2471,586],{"class":269},[255,2473,1705],{"class":295},[255,2475,591],{"class":269},[255,2477,457],{"class":295},[255,2479,586],{"class":269},[255,2481,2482],{"class":295}," dogegg3",[255,2484,601],{"class":269},[255,2486,604],{"class":295},[255,2488,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515],{"class":257,"line":1773},[255,2490,394],{"class":302},[255,2492,270],{"class":295},[255,2494,577],{"class":261},[255,2496,883],{"class":295},[255,2498,381],{"class":269},[255,2500,402],{"class":288},[255,2502,586],{"class":269},[255,2504,883],{"class":295},[255,2506,591],{"class":269},[255,2508,457],{"class":295},[255,2510,586],{"class":269},[255,2512,1204],{"class":295},[255,2514,601],{"class":269},[255,2516,604],{"class":295},[255,2518,2519,2522,2524,2526,2528,2530,2532,2534,2536,2538,2540,2542,2545,2547],{"class":257,"line":1778},[255,2520,2521],{"class":302},"      for",[255,2523,270],{"class":295},[255,2525,577],{"class":261},[255,2527,1741],{"class":295},[255,2529,381],{"class":269},[255,2531,402],{"class":288},[255,2533,586],{"class":269},[255,2535,1741],{"class":295},[255,2537,591],{"class":269},[255,2539,457],{"class":295},[255,2541,586],{"class":269},[255,2543,2544],{"class":295}," j",[255,2546,601],{"class":269},[255,2548,604],{"class":295},[255,2550,2551,2554,2556,2558,2560,2562,2564,2566],{"class":257,"line":1965},[255,2552,2553],{"class":295},"        sum3 ",[255,2555,413],{"class":269},[255,2557,1705],{"class":295},[255,2559,905],{"class":269},[255,2561,883],{"class":295},[255,2563,905],{"class":269},[255,2565,2544],{"class":295},[255,2567,564],{"class":269},[255,2569,2570],{"class":257,"line":1982},[255,2571,2572],{"class":295},"      }\n",[255,2574,2575],{"class":257,"line":1988},[255,2576,420],{"class":295},[255,2578,2579],{"class":257,"line":1993},[255,2580,620],{"class":295},[255,2582,2583],{"class":257,"line":1998},[255,2584,389],{"emptyLinePlaceholder":388},[255,2586,2587,2589,2591,2593,2595,2597,2600],{"class":257,"line":2003},[255,2588,337],{"class":302},[255,2590,1783],{"class":295},[255,2592,1786],{"class":269},[255,2594,1789],{"class":295},[255,2596,1786],{"class":269},[255,2598,2599],{"class":295}," sum3",[255,2601,564],{"class":269},[255,2603,2604],{"class":257,"line":2018},[255,2605,434],{"class":295},[245,2607,2609],{"className":636,"code":2608,"filename":638,"language":639,"meta":251,"style":251},"function dogeggs_sum(n) {\n  let sum1 = 0;\n  for (let dogegg1 = 0; dogegg1 \u003C n; dogegg1++) {\n    sum1 += dogegg1;\n  }\n\n  let sum2 = 0;\n  for (let dogegg2 = 0; dogegg2 \u003C n; dogegg2++) {\n    for (let i = 0; i \u003C n; i++) {\n      sum2 += dogegg2 * i;\n    }\n  }\n\n  let sum3 = 0;\n  for (let dogegg3 = 0; dogegg3 \u003C n; dogegg3++) {\n    for (let i = 0; i \u003C n; i++) {\n      for (let j = 0; j \u003C n; j++) {\n        sum3 += dogegg3 * i * j;\n      }\n    }\n  }\n\n  return sum1 + sum2 + sum3;\n}\n",[218,2610,2611,2625,2638,2670,2681,2685,2689,2702,2734,2766,2781,2785,2789,2793,2805,2837,2869,2901,2920,2924,2928,2932,2936,2953],{"__ignoreMap":251},[255,2612,2613,2615,2617,2619,2621,2623],{"class":257,"line":258},[255,2614,646],{"class":261},[255,2616,266],{"class":265},[255,2618,315],{"class":269},[255,2620,220],{"class":273},[255,2622,465],{"class":269},[255,2624,370],{"class":269},[255,2626,2627,2629,2632,2634,2636],{"class":257,"line":279},[255,2628,661],{"class":261},[255,2630,2631],{"class":295}," sum1",[255,2633,285],{"class":269},[255,2635,402],{"class":288},[255,2637,564],{"class":269},[255,2639,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668],{"class":257,"line":292},[255,2641,303],{"class":302},[255,2643,270],{"class":680},[255,2645,683],{"class":261},[255,2647,2321],{"class":295},[255,2649,285],{"class":269},[255,2651,402],{"class":288},[255,2653,586],{"class":269},[255,2655,2321],{"class":295},[255,2657,696],{"class":269},[255,2659,457],{"class":295},[255,2661,586],{"class":269},[255,2663,2321],{"class":295},[255,2665,601],{"class":269},[255,2667,707],{"class":680},[255,2669,506],{"class":269},[255,2671,2672,2675,2677,2679],{"class":257,"line":299},[255,2673,2674],{"class":295},"    sum1",[255,2676,328],{"class":269},[255,2678,2321],{"class":295},[255,2680,564],{"class":269},[255,2682,2683],{"class":257,"line":322},[255,2684,620],{"class":269},[255,2686,2687],{"class":257,"line":334},[255,2688,389],{"emptyLinePlaceholder":388},[255,2690,2691,2693,2696,2698,2700],{"class":257,"line":423},[255,2692,661],{"class":261},[255,2694,2695],{"class":295}," sum2",[255,2697,285],{"class":269},[255,2699,402],{"class":288},[255,2701,564],{"class":269},[255,2703,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728,2730,2732],{"class":257,"line":431},[255,2705,303],{"class":302},[255,2707,270],{"class":680},[255,2709,683],{"class":261},[255,2711,2382],{"class":295},[255,2713,285],{"class":269},[255,2715,402],{"class":288},[255,2717,586],{"class":269},[255,2719,2382],{"class":295},[255,2721,696],{"class":269},[255,2723,457],{"class":295},[255,2725,586],{"class":269},[255,2727,2382],{"class":295},[255,2729,601],{"class":269},[255,2731,707],{"class":680},[255,2733,506],{"class":269},[255,2735,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764],{"class":257,"line":1000},[255,2737,394],{"class":302},[255,2739,270],{"class":680},[255,2741,683],{"class":261},[255,2743,1204],{"class":295},[255,2745,285],{"class":269},[255,2747,402],{"class":288},[255,2749,586],{"class":269},[255,2751,1204],{"class":295},[255,2753,696],{"class":269},[255,2755,457],{"class":295},[255,2757,586],{"class":269},[255,2759,1204],{"class":295},[255,2761,601],{"class":269},[255,2763,707],{"class":680},[255,2765,506],{"class":269},[255,2767,2768,2771,2773,2775,2777,2779],{"class":257,"line":1007},[255,2769,2770],{"class":295},"      sum2",[255,2772,328],{"class":269},[255,2774,2382],{"class":295},[255,2776,1353],{"class":269},[255,2778,1204],{"class":295},[255,2780,564],{"class":269},[255,2782,2783],{"class":257,"line":1690},[255,2784,420],{"class":269},[255,2786,2787],{"class":257,"line":1700},[255,2788,620],{"class":269},[255,2790,2791],{"class":257,"line":1718},[255,2792,389],{"emptyLinePlaceholder":388},[255,2794,2795,2797,2799,2801,2803],{"class":257,"line":1735},[255,2796,661],{"class":261},[255,2798,2599],{"class":295},[255,2800,285],{"class":269},[255,2802,402],{"class":288},[255,2804,564],{"class":269},[255,2806,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835],{"class":257,"line":1754},[255,2808,303],{"class":302},[255,2810,270],{"class":680},[255,2812,683],{"class":261},[255,2814,2482],{"class":295},[255,2816,285],{"class":269},[255,2818,402],{"class":288},[255,2820,586],{"class":269},[255,2822,2482],{"class":295},[255,2824,696],{"class":269},[255,2826,457],{"class":295},[255,2828,586],{"class":269},[255,2830,2482],{"class":295},[255,2832,601],{"class":269},[255,2834,707],{"class":680},[255,2836,506],{"class":269},[255,2838,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867],{"class":257,"line":1773},[255,2840,394],{"class":302},[255,2842,270],{"class":680},[255,2844,683],{"class":261},[255,2846,1204],{"class":295},[255,2848,285],{"class":269},[255,2850,402],{"class":288},[255,2852,586],{"class":269},[255,2854,1204],{"class":295},[255,2856,696],{"class":269},[255,2858,457],{"class":295},[255,2860,586],{"class":269},[255,2862,1204],{"class":295},[255,2864,601],{"class":269},[255,2866,707],{"class":680},[255,2868,506],{"class":269},[255,2870,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899],{"class":257,"line":1778},[255,2872,2521],{"class":302},[255,2874,270],{"class":680},[255,2876,683],{"class":261},[255,2878,2544],{"class":295},[255,2880,285],{"class":269},[255,2882,402],{"class":288},[255,2884,586],{"class":269},[255,2886,2544],{"class":295},[255,2888,696],{"class":269},[255,2890,457],{"class":295},[255,2892,586],{"class":269},[255,2894,2544],{"class":295},[255,2896,601],{"class":269},[255,2898,707],{"class":680},[255,2900,506],{"class":269},[255,2902,2903,2906,2908,2910,2912,2914,2916,2918],{"class":257,"line":1965},[255,2904,2905],{"class":295},"        sum3",[255,2907,328],{"class":269},[255,2909,2482],{"class":295},[255,2911,1353],{"class":269},[255,2913,1204],{"class":295},[255,2915,1353],{"class":269},[255,2917,2544],{"class":295},[255,2919,564],{"class":269},[255,2921,2922],{"class":257,"line":1982},[255,2923,2572],{"class":269},[255,2925,2926],{"class":257,"line":1988},[255,2927,420],{"class":269},[255,2929,2930],{"class":257,"line":1993},[255,2931,620],{"class":269},[255,2933,2934],{"class":257,"line":1998},[255,2935,389],{"emptyLinePlaceholder":388},[255,2937,2938,2940,2942,2945,2947,2949,2951],{"class":257,"line":2003},[255,2939,337],{"class":302},[255,2941,2631],{"class":295},[255,2943,2944],{"class":269}," +",[255,2946,2695],{"class":295},[255,2948,2944],{"class":269},[255,2950,2599],{"class":295},[255,2952,564],{"class":269},[255,2954,2955],{"class":257,"line":2018},[255,2956,434],{"class":269},[183,2958,2959],{},"根据上面学习的知识：",[183,2961,2962],{},"这段代码的 T(n) = O(n) + O(n²) + O(n³)，按照我们取“主导”部分，显然前面两个都不及第三个，所以 T(n) = O(n³)。",[183,2964,2965],{},"身下的我们就是要多去练习找一下时间复杂度，加强记忆即可。",[768,2967,2968],{"id":2968},"常见时间复杂度",[183,2970,2971],{},"算法学习过程中，我们会遇到各种各样的时间复杂度，当常见的时间复杂度都在下面之列：",[1455,2973,2974,2990],{},[1458,2975,2976],{},[1461,2977,2978,2981,2984,2987],{},[1464,2979,2980],{},"复杂度",[1464,2982,2983],{},"名称",[1464,2985,2986],{},"增长特点",[1464,2988,2989],{},"典型例子",[1489,2991,2992,3008,3024,3039,3055,3070,3086,3102],{},[1461,2993,2994,2999,3002,3005],{},[1494,2995,2996],{},[218,2997,2998],{},"O(1)",[1494,3000,3001],{},"常数复杂度",[1494,3003,3004],{},"输入再大，操作次数不变",[1494,3006,3007],{},"取数组第 k 个元素；简单加减赋值",[1461,3009,3010,3015,3018,3021],{},[1494,3011,3012],{},[218,3013,3014],{},"O(log n)",[1494,3016,3017],{},"对数复杂度",[1494,3019,3020],{},"n 翻倍，只多固定几步，增长极慢",[1494,3022,3023],{},"从 1 开始每次乘 2",[1461,3025,3026,3030,3033,3036],{},[1494,3027,3028],{},[218,3029,1503],{},[1494,3031,3032],{},"线性复杂度",[1494,3034,3035],{},"操作数和 n 成正比",[1494,3037,3038],{},"遍历一次数组，单循环",[1461,3040,3041,3046,3049,3052],{},[1494,3042,3043],{},[218,3044,3045],{},"O(n log n)",[1494,3047,3048],{},"线性对数",[1494,3050,3051],{},"比线性慢、比平方快",[1494,3053,3054],{},"归并排序、快速排序（平均）",[1461,3056,3057,3061,3064,3067],{},[1494,3058,3059],{},[218,3060,1531],{},[1494,3062,3063],{},"平方复杂度",[1494,3065,3066],{},"n 扩大 10 倍，工作量 ×100",[1494,3068,3069],{},"双层 for 循环，冒泡排序",[1461,3071,3072,3077,3080,3083],{},[1494,3073,3074],{},[218,3075,3076],{},"O(n³)",[1494,3078,3079],{},"立方复杂度",[1494,3081,3082],{},"n 扩大 10 倍，工作量 ×1000",[1494,3084,3085],{},"三层嵌套循环",[1461,3087,3088,3093,3096,3099],{},[1494,3089,3090],{},[218,3091,3092],{},"O(2ⁿ)",[1494,3094,3095],{},"指数复杂度",[1494,3097,3098],{},"n 稍微增加，计算量爆炸",[1494,3100,3101],{},"暴力枚举全部子集；朴素递归求斐波那契",[1461,3103,3104,3109,3112,3115],{},[1494,3105,3106],{},[218,3107,3108],{},"O(n!)",[1494,3110,3111],{},"阶乘复杂度",[1494,3113,3114],{},"比指数增长更快，n 很小就跑不动",[1494,3116,3117],{},"全排列暴力枚举",[183,3119,3120],{},"其中复杂度大小比较：",[183,3122,3123,3125,3126,3125,3128,3125,3130,3125,3132,3125,3134,3125,3136,3125,3138],{},[218,3124,2998],{}," \u003C ",[218,3127,3014],{},[218,3129,1503],{},[218,3131,3045],{},[218,3133,1531],{},[218,3135,3076],{},[218,3137,3092],{},[218,3139,3108],{},[183,3141,3142],{},"下面每个复杂度我们看一下。例子都按同一件事来写，方便对照循环是怎么把规模抬上去的。",[3144,3145,3147],"h4",{"id":3146},"o1-常数按下标取值","O(1) 常数：按下标取值",[183,3149,3150],{},"注意这是一个特殊的复杂度，不是只执行一次的代码时间复杂度就是 O(1)，只要你说常熟，像O(2),O(3),O(1000)在复杂度上的表示都是 O(1)。",[242,3152,3153,3194,3233,3294,3338],{},[245,3154,3156],{"className":247,"code":3155,"filename":249,"language":250,"meta":251,"style":251},"def get_kth(nums, k):\n  return nums[k]\n",[218,3157,3158,3178],{"__ignoreMap":251},[255,3159,3160,3162,3165,3167,3170,3173,3176],{"class":257,"line":258},[255,3161,262],{"class":261},[255,3163,3164],{"class":265}," get_kth",[255,3166,315],{"class":269},[255,3168,3169],{"class":273},"nums",[255,3171,3172],{"class":269},",",[255,3174,3175],{"class":273}," k",[255,3177,276],{"class":269},[255,3179,3180,3182,3185,3188,3191],{"class":257,"line":279},[255,3181,337],{"class":302},[255,3183,3184],{"class":295}," nums",[255,3186,3187],{"class":269},"[",[255,3189,3190],{"class":295},"k",[255,3192,3193],{"class":269},"]\n",[245,3195,3197],{"className":343,"code":3196,"filename":345,"language":346,"meta":251,"style":251},"fun get_kth(nums: IntArray, k: Int): Int {\n    return nums[k]\n}\n",[218,3198,3199,3222,3229],{"__ignoreMap":251},[255,3200,3201,3203,3205,3208,3211,3214,3216,3218,3220],{"class":257,"line":258},[255,3202,353],{"class":269},[255,3204,3164],{"class":265},[255,3206,3207],{"class":295},"(nums: ",[255,3209,3210],{"class":361},"IntArray",[255,3212,3213],{"class":295},", k: ",[255,3215,362],{"class":361},[255,3217,365],{"class":295},[255,3219,362],{"class":361},[255,3221,370],{"class":295},[255,3223,3224,3226],{"class":257,"line":279},[255,3225,426],{"class":302},[255,3227,3228],{"class":295}," nums[k]\n",[255,3230,3231],{"class":257,"line":292},[255,3232,434],{"class":295},[245,3234,3236],{"className":437,"code":3235,"filename":439,"language":440,"meta":251,"style":251},"func get_kth(_ nums: [Int], _ k: Int) -> Int {\n    return nums[k]\n}\n",[218,3237,3238,3278,3290],{"__ignoreMap":251},[255,3239,3240,3242,3244,3246,3248,3250,3252,3254,3256,3259,3262,3264,3266,3268,3270,3272,3274,3276],{"class":257,"line":258},[255,3241,447],{"class":261},[255,3243,3164],{"class":265},[255,3245,315],{"class":269},[255,3247,454],{"class":265},[255,3249,3184],{"class":273},[255,3251,460],{"class":295},[255,3253,3187],{"class":269},[255,3255,362],{"class":361},[255,3257,3258],{"class":269},"]",[255,3260,3261],{"class":295},", ",[255,3263,454],{"class":265},[255,3265,3175],{"class":273},[255,3267,460],{"class":295},[255,3269,362],{"class":361},[255,3271,465],{"class":269},[255,3273,468],{"class":269},[255,3275,471],{"class":361},[255,3277,370],{"class":269},[255,3279,3280,3282,3284,3286,3288],{"class":257,"line":279},[255,3281,426],{"class":302},[255,3283,3184],{"class":295},[255,3285,3187],{"class":269},[255,3287,3190],{"class":295},[255,3289,3193],{"class":269},[255,3291,3292],{"class":257,"line":292},[255,3293,434],{"class":269},[245,3295,3297],{"className":531,"code":3296,"filename":533,"language":534,"meta":251,"style":251},"int get_kth(List\u003Cint> nums, int k) {\n  return nums[k];\n}\n",[218,3298,3299,3325,3334],{"__ignoreMap":251},[255,3300,3301,3303,3305,3307,3310,3312,3314,3317,3319,3322],{"class":257,"line":258},[255,3302,541],{"class":361},[255,3304,3164],{"class":265},[255,3306,315],{"class":295},[255,3308,3309],{"class":361},"List",[255,3311,591],{"class":295},[255,3313,541],{"class":361},[255,3315,3316],{"class":295},"> nums",[255,3318,3172],{"class":269},[255,3320,3321],{"class":361}," int",[255,3323,3324],{"class":295}," k) {\n",[255,3326,3327,3329,3332],{"class":257,"line":279},[255,3328,337],{"class":302},[255,3330,3331],{"class":295}," nums[k]",[255,3333,564],{"class":269},[255,3335,3336],{"class":257,"line":292},[255,3337,434],{"class":295},[245,3339,3341],{"className":636,"code":3340,"filename":638,"language":639,"meta":251,"style":251},"function get_kth(nums, k) {\n  return nums[k];\n}\n",[218,3342,3343,3361,3375],{"__ignoreMap":251},[255,3344,3345,3347,3349,3351,3353,3355,3357,3359],{"class":257,"line":258},[255,3346,646],{"class":261},[255,3348,3164],{"class":265},[255,3350,315],{"class":269},[255,3352,3169],{"class":273},[255,3354,3172],{"class":269},[255,3356,3175],{"class":273},[255,3358,465],{"class":269},[255,3360,370],{"class":269},[255,3362,3363,3365,3367,3369,3371,3373],{"class":257,"line":279},[255,3364,337],{"class":302},[255,3366,3184],{"class":295},[255,3368,3187],{"class":680},[255,3370,3190],{"class":295},[255,3372,3258],{"class":680},[255,3374,564],{"class":269},[255,3376,3377],{"class":257,"line":292},[255,3378,434],{"class":269},[183,3380,3381,3382,3384],{},"数组按下标取值，不管里面有 10 个数还是 1000 万个数，都只做一次。没有跟着 n 走的循环，所以是常数复杂度。",[218,3383,3190],{}," 必须落在下标范围内。",[3144,3386,3388],{"id":3387},"olog-n-对数每次翻倍","O(log n) 对数：每次翻倍",[183,3390,3391,3392,1411],{},"dogegg 从 1 开始，每次乘 2，直到不小于 n。循环转几圈，就是 ",[218,3393,3394],{},"log2(n)",[242,3396,3397,3473,3556,3646,3728],{},[245,3398,3400],{"className":247,"code":3399,"filename":249,"language":250,"meta":251,"style":251},"def dogegg_double(n):\n  dogegg = 1              # 从 1 开始\n\n  while dogegg \u003C n:       # 还没长到 n，就再乘一次 2\n    dogegg = dogegg * 2   # 1 → 2 → 4 → 8，圈数就是 log2(n)\n  return dogegg\n",[218,3401,3402,3415,3429,3433,3450,3467],{"__ignoreMap":251},[255,3403,3404,3406,3409,3411,3413],{"class":257,"line":258},[255,3405,262],{"class":261},[255,3407,3408],{"class":265}," dogegg_double",[255,3410,315],{"class":269},[255,3412,220],{"class":273},[255,3414,276],{"class":269},[255,3416,3417,3420,3422,3425],{"class":257,"line":279},[255,3418,3419],{"class":295},"  dogegg ",[255,3421,381],{"class":269},[255,3423,3424],{"class":288}," 1",[255,3426,3428],{"class":3427},"sHwdD","              # 从 1 开始\n",[255,3430,3431],{"class":257,"line":292},[255,3432,389],{"emptyLinePlaceholder":388},[255,3434,3435,3438,3440,3442,3444,3447],{"class":257,"line":299},[255,3436,3437],{"class":302},"  while",[255,3439,306],{"class":295},[255,3441,591],{"class":269},[255,3443,457],{"class":295},[255,3445,3446],{"class":269},":",[255,3448,3449],{"class":3427},"       # 还没长到 n，就再乘一次 2\n",[255,3451,3452,3455,3457,3459,3461,3464],{"class":257,"line":322},[255,3453,3454],{"class":295},"    dogegg ",[255,3456,381],{"class":269},[255,3458,306],{"class":295},[255,3460,905],{"class":269},[255,3462,3463],{"class":288}," 2",[255,3465,3466],{"class":3427},"   # 1 → 2 → 4 → 8，圈数就是 log2(n)\n",[255,3468,3469,3471],{"class":257,"line":334},[255,3470,337],{"class":302},[255,3472,331],{"class":295},[245,3474,3476],{"className":343,"code":3475,"filename":345,"language":346,"meta":251,"style":251},"fun dogegg_double(n: Int): Int {\n    var dogegg = 1            \u002F\u002F 从 1 开始\n\n    while (dogegg \u003C n) {      \u002F\u002F 还没长到 n，就再乘一次 2\n        dogegg = dogegg * 2   \u002F\u002F 1 → 2 → 4 → 8，圈数就是 log2(n)\n    }\n    return dogegg\n}\n",[218,3477,3478,3494,3507,3511,3526,3542,3546,3552],{"__ignoreMap":251},[255,3479,3480,3482,3484,3486,3488,3490,3492],{"class":257,"line":258},[255,3481,353],{"class":269},[255,3483,3408],{"class":265},[255,3485,358],{"class":295},[255,3487,362],{"class":361},[255,3489,365],{"class":295},[255,3491,362],{"class":361},[255,3493,370],{"class":295},[255,3495,3496,3498,3500,3502,3504],{"class":257,"line":279},[255,3497,375],{"class":269},[255,3499,306],{"class":295},[255,3501,381],{"class":269},[255,3503,3424],{"class":288},[255,3505,3506],{"class":3427},"            \u002F\u002F 从 1 开始\n",[255,3508,3509],{"class":257,"line":292},[255,3510,389],{"emptyLinePlaceholder":388},[255,3512,3513,3516,3518,3520,3523],{"class":257,"line":299},[255,3514,3515],{"class":302},"    while",[255,3517,397],{"class":295},[255,3519,591],{"class":269},[255,3521,3522],{"class":295}," n) {      ",[255,3524,3525],{"class":3427},"\u002F\u002F 还没长到 n，就再乘一次 2\n",[255,3527,3528,3531,3533,3535,3537,3539],{"class":257,"line":322},[255,3529,3530],{"class":295},"        dogegg ",[255,3532,381],{"class":269},[255,3534,306],{"class":295},[255,3536,905],{"class":269},[255,3538,3463],{"class":288},[255,3540,3541],{"class":3427},"   \u002F\u002F 1 → 2 → 4 → 8，圈数就是 log2(n)\n",[255,3543,3544],{"class":257,"line":334},[255,3545,420],{"class":295},[255,3547,3548,3550],{"class":257,"line":423},[255,3549,426],{"class":302},[255,3551,331],{"class":295},[255,3553,3554],{"class":257,"line":431},[255,3555,434],{"class":295},[245,3557,3559],{"className":437,"code":3558,"filename":439,"language":440,"meta":251,"style":251},"func dogegg_double(_ n: Int) -> Int {\n    var dogegg = 1            \u002F\u002F 从 1 开始\n\n    while dogegg \u003C n {        \u002F\u002F 还没长到 n，就再乘一次 2\n        dogegg = dogegg * 2   \u002F\u002F 1 → 2 → 4 → 8，圈数就是 log2(n)\n    }\n    return dogegg\n}\n",[218,3560,3561,3585,3597,3601,3618,3632,3636,3642],{"__ignoreMap":251},[255,3562,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583],{"class":257,"line":258},[255,3564,447],{"class":261},[255,3566,3408],{"class":265},[255,3568,315],{"class":269},[255,3570,454],{"class":265},[255,3572,457],{"class":273},[255,3574,460],{"class":295},[255,3576,362],{"class":361},[255,3578,465],{"class":269},[255,3580,468],{"class":269},[255,3582,471],{"class":361},[255,3584,370],{"class":269},[255,3586,3587,3589,3591,3593,3595],{"class":257,"line":279},[255,3588,375],{"class":288},[255,3590,306],{"class":295},[255,3592,381],{"class":269},[255,3594,3424],{"class":288},[255,3596,3506],{"class":3427},[255,3598,3599],{"class":257,"line":292},[255,3600,389],{"emptyLinePlaceholder":388},[255,3602,3603,3605,3607,3609,3612,3615],{"class":257,"line":299},[255,3604,3515],{"class":302},[255,3606,306],{"class":295},[255,3608,591],{"class":269},[255,3610,3611],{"class":295}," n ",[255,3613,3614],{"class":269},"{",[255,3616,3617],{"class":3427},"        \u002F\u002F 还没长到 n，就再乘一次 2\n",[255,3619,3620,3622,3624,3626,3628,3630],{"class":257,"line":322},[255,3621,3530],{"class":295},[255,3623,381],{"class":269},[255,3625,306],{"class":295},[255,3627,905],{"class":269},[255,3629,3463],{"class":288},[255,3631,3541],{"class":3427},[255,3633,3634],{"class":257,"line":334},[255,3635,420],{"class":269},[255,3637,3638,3640],{"class":257,"line":423},[255,3639,426],{"class":302},[255,3641,331],{"class":295},[255,3643,3644],{"class":257,"line":431},[255,3645,434],{"class":269},[245,3647,3649],{"className":531,"code":3648,"filename":533,"language":534,"meta":251,"style":251},"int dogegg_double(int n) {\n  var dogegg = 1;             \u002F\u002F 从 1 开始\n\n  while (dogegg \u003C n) {        \u002F\u002F 还没长到 n，就再乘一次 2\n    dogegg = dogegg * 2;      \u002F\u002F 1 → 2 → 4 → 8，圈数就是 log2(n)\n  }\n  return dogegg;\n}\n",[218,3650,3651,3663,3678,3682,3695,3712,3716,3724],{"__ignoreMap":251},[255,3652,3653,3655,3657,3659,3661],{"class":257,"line":258},[255,3654,541],{"class":361},[255,3656,3408],{"class":265},[255,3658,315],{"class":295},[255,3660,541],{"class":361},[255,3662,550],{"class":295},[255,3664,3665,3667,3669,3671,3673,3675],{"class":257,"line":279},[255,3666,555],{"class":261},[255,3668,306],{"class":295},[255,3670,381],{"class":269},[255,3672,3424],{"class":288},[255,3674,586],{"class":269},[255,3676,3677],{"class":3427},"             \u002F\u002F 从 1 开始\n",[255,3679,3680],{"class":257,"line":292},[255,3681,389],{"emptyLinePlaceholder":388},[255,3683,3684,3686,3688,3690,3693],{"class":257,"line":299},[255,3685,3437],{"class":302},[255,3687,397],{"class":295},[255,3689,591],{"class":269},[255,3691,3692],{"class":295}," n) {        ",[255,3694,3525],{"class":3427},[255,3696,3697,3699,3701,3703,3705,3707,3709],{"class":257,"line":322},[255,3698,3454],{"class":295},[255,3700,381],{"class":269},[255,3702,306],{"class":295},[255,3704,905],{"class":269},[255,3706,3463],{"class":288},[255,3708,586],{"class":269},[255,3710,3711],{"class":3427},"      \u002F\u002F 1 → 2 → 4 → 8，圈数就是 log2(n)\n",[255,3713,3714],{"class":257,"line":334},[255,3715,620],{"class":295},[255,3717,3718,3720,3722],{"class":257,"line":423},[255,3719,337],{"class":302},[255,3721,598],{"class":295},[255,3723,564],{"class":269},[255,3725,3726],{"class":257,"line":431},[255,3727,434],{"class":295},[245,3729,3731],{"className":636,"code":3730,"filename":638,"language":639,"meta":251,"style":251},"function dogegg_double(n) {\n  let dogegg = 1;             \u002F\u002F 从 1 开始\n\n  while (dogegg \u003C n) {        \u002F\u002F 还没长到 n，就再乘一次 2\n    dogegg = dogegg * 2;      \u002F\u002F 1 → 2 → 4 → 8，圈数就是 log2(n)\n  }\n  return dogegg;\n}\n",[218,3732,3733,3747,3761,3765,3784,3801,3805,3813],{"__ignoreMap":251},[255,3734,3735,3737,3739,3741,3743,3745],{"class":257,"line":258},[255,3736,646],{"class":261},[255,3738,3408],{"class":265},[255,3740,315],{"class":269},[255,3742,220],{"class":273},[255,3744,465],{"class":269},[255,3746,370],{"class":269},[255,3748,3749,3751,3753,3755,3757,3759],{"class":257,"line":279},[255,3750,661],{"class":261},[255,3752,598],{"class":295},[255,3754,285],{"class":269},[255,3756,3424],{"class":288},[255,3758,586],{"class":269},[255,3760,3677],{"class":3427},[255,3762,3763],{"class":257,"line":292},[255,3764,389],{"emptyLinePlaceholder":388},[255,3766,3767,3769,3771,3774,3776,3778,3780,3782],{"class":257,"line":299},[255,3768,3437],{"class":302},[255,3770,270],{"class":680},[255,3772,3773],{"class":295},"dogegg",[255,3775,696],{"class":269},[255,3777,457],{"class":295},[255,3779,707],{"class":680},[255,3781,3614],{"class":269},[255,3783,3617],{"class":3427},[255,3785,3786,3789,3791,3793,3795,3797,3799],{"class":257,"line":322},[255,3787,3788],{"class":295},"    dogegg",[255,3790,285],{"class":269},[255,3792,598],{"class":295},[255,3794,1353],{"class":269},[255,3796,3463],{"class":288},[255,3798,586],{"class":269},[255,3800,3711],{"class":3427},[255,3802,3803],{"class":257,"line":334},[255,3804,620],{"class":269},[255,3806,3807,3809,3811],{"class":257,"line":423},[255,3808,337],{"class":302},[255,3810,598],{"class":295},[255,3812,564],{"class":269},[255,3814,3815],{"class":257,"line":431},[255,3816,434],{"class":269},[183,3818,3819],{},"dogegg 的变化是 1 → 2 → 4 → 8 → …。每转一圈就多乘一个 2，停下来时，是 x 个 2 连乘，结果不小于 n：",[183,3821,3822],{},[218,3823,3824],{},"2 × 2 × … × 2 >= n",[183,3826,3827],{},"这 x 个 2 连乘，就是 2 的 x 次方对应 n：",[183,3829,3830],{},[218,3831,3832],{},"2ˣ >= n",[183,3834,3835],{},"两边取以 2 为底的对数，圈数就是：",[183,3837,3838],{},[218,3839,3840],{},"x = log2(n)",[183,3842,3843,3844,3846],{},"n 正好是 2 的整数次方时等号成立。对不齐时，x 比 ",[218,3845,3394],{}," 略大，向上取整，趋势不变。",[193,3848,3849,3859,3866],{},[196,3850,3851,3852,3855,3856],{},"n = 8：",[218,3853,3854],{},"2 × 2 × 2 = 8","，x = 3，也就是 ",[218,3857,3858],{},"log2(8) = 3",[196,3860,3861,3862,3865],{},"n 大约 1000：",[218,3863,3864],{},"2¹⁰ = 1024","，x 大约 10",[196,3867,3868,3869,3872],{},"n 大约 100 万：",[218,3870,3871],{},"2²⁰ ≈ 104万","，x 大约 20",[183,3874,3875,3876,1411],{},"n 从 1000 涨到 100 万，圈数只从大约 10 变成大约 20。底数是 2 还是 10 不用写进大 O，换底只差一个固定倍数，固定倍数会被抹掉，所以写成 ",[218,3877,3014],{},[3144,3879,3881],{"id":3880},"on-线性找最大值","O(n) 线性：找最大值",[183,3883,3884],{},"每个元素都要看一眼，看完一遍就是 O(n)。数据量翻倍，比较次数也大约翻倍。下面默认数组里至少有一个数。",[242,3886,3887,3967,4046,4141,4227],{},[245,3888,3890],{"className":247,"code":3889,"filename":249,"language":250,"meta":251,"style":251},"def find_max(nums):\n  best = nums[0]\n  for x in nums:\n    if x > best:\n      best = x\n  return best\n",[218,3891,3892,3905,3921,3935,3950,3960],{"__ignoreMap":251},[255,3893,3894,3896,3899,3901,3903],{"class":257,"line":258},[255,3895,262],{"class":261},[255,3897,3898],{"class":265}," find_max",[255,3900,315],{"class":269},[255,3902,3169],{"class":273},[255,3904,276],{"class":269},[255,3906,3907,3910,3912,3914,3916,3919],{"class":257,"line":279},[255,3908,3909],{"class":295},"  best ",[255,3911,381],{"class":269},[255,3913,3184],{"class":295},[255,3915,3187],{"class":269},[255,3917,3918],{"class":288},"0",[255,3920,3193],{"class":269},[255,3922,3923,3925,3928,3930,3932],{"class":257,"line":292},[255,3924,303],{"class":302},[255,3926,3927],{"class":295}," x ",[255,3929,309],{"class":302},[255,3931,3184],{"class":295},[255,3933,3934],{"class":269},":\n",[255,3936,3937,3940,3942,3945,3948],{"class":257,"line":299},[255,3938,3939],{"class":302},"    if",[255,3941,3927],{"class":295},[255,3943,3944],{"class":269},">",[255,3946,3947],{"class":295}," best",[255,3949,3934],{"class":269},[255,3951,3952,3955,3957],{"class":257,"line":322},[255,3953,3954],{"class":295},"      best ",[255,3956,381],{"class":269},[255,3958,3959],{"class":295}," x\n",[255,3961,3962,3964],{"class":257,"line":334},[255,3963,337],{"class":302},[255,3965,3966],{"class":295}," best\n",[245,3968,3970],{"className":343,"code":3969,"filename":345,"language":346,"meta":251,"style":251},"fun find_max(nums: IntArray): Int {\n    var best = nums[0]\n    for (x in nums) {\n        if (x > best) best = x\n    }\n    return best\n}\n",[218,3971,3972,3988,4004,4016,4032,4036,4042],{"__ignoreMap":251},[255,3973,3974,3976,3978,3980,3982,3984,3986],{"class":257,"line":258},[255,3975,353],{"class":269},[255,3977,3898],{"class":265},[255,3979,3207],{"class":295},[255,3981,3210],{"class":361},[255,3983,365],{"class":295},[255,3985,362],{"class":361},[255,3987,370],{"class":295},[255,3989,3990,3992,3995,3997,4000,4002],{"class":257,"line":279},[255,3991,375],{"class":269},[255,3993,3994],{"class":295}," best ",[255,3996,381],{"class":269},[255,3998,3999],{"class":295}," nums[",[255,4001,3918],{"class":288},[255,4003,3193],{"class":295},[255,4005,4006,4008,4011,4013],{"class":257,"line":292},[255,4007,394],{"class":302},[255,4009,4010],{"class":295}," (x ",[255,4012,309],{"class":269},[255,4014,4015],{"class":295}," nums) {\n",[255,4017,4018,4021,4023,4025,4028,4030],{"class":257,"line":299},[255,4019,4020],{"class":302},"        if",[255,4022,4010],{"class":295},[255,4024,3944],{"class":269},[255,4026,4027],{"class":295}," best) best ",[255,4029,381],{"class":269},[255,4031,3959],{"class":295},[255,4033,4034],{"class":257,"line":322},[255,4035,420],{"class":295},[255,4037,4038,4040],{"class":257,"line":334},[255,4039,426],{"class":302},[255,4041,3966],{"class":295},[255,4043,4044],{"class":257,"line":423},[255,4045,434],{"class":295},[245,4047,4049],{"className":437,"code":4048,"filename":439,"language":440,"meta":251,"style":251},"func find_max(_ nums: [Int]) -> Int {\n    var best = nums[0]\n    for x in nums {\n        if x > best { best = x }\n    }\n    return best\n}\n",[218,4050,4051,4078,4094,4107,4127,4131,4137],{"__ignoreMap":251},[255,4052,4053,4055,4057,4059,4061,4063,4065,4067,4069,4072,4074,4076],{"class":257,"line":258},[255,4054,447],{"class":261},[255,4056,3898],{"class":265},[255,4058,315],{"class":269},[255,4060,454],{"class":265},[255,4062,3184],{"class":273},[255,4064,460],{"class":295},[255,4066,3187],{"class":269},[255,4068,362],{"class":361},[255,4070,4071],{"class":269},"])",[255,4073,468],{"class":269},[255,4075,471],{"class":361},[255,4077,370],{"class":269},[255,4079,4080,4082,4084,4086,4088,4090,4092],{"class":257,"line":279},[255,4081,375],{"class":288},[255,4083,3994],{"class":295},[255,4085,381],{"class":269},[255,4087,3184],{"class":295},[255,4089,3187],{"class":269},[255,4091,3918],{"class":288},[255,4093,3193],{"class":269},[255,4095,4096,4098,4100,4102,4105],{"class":257,"line":292},[255,4097,394],{"class":302},[255,4099,3927],{"class":295},[255,4101,309],{"class":302},[255,4103,4104],{"class":295}," nums ",[255,4106,506],{"class":269},[255,4108,4109,4111,4113,4115,4117,4119,4121,4123,4125],{"class":257,"line":299},[255,4110,4020],{"class":302},[255,4112,3927],{"class":295},[255,4114,3944],{"class":269},[255,4116,3994],{"class":295},[255,4118,3614],{"class":269},[255,4120,3994],{"class":295},[255,4122,381],{"class":269},[255,4124,3927],{"class":295},[255,4126,434],{"class":269},[255,4128,4129],{"class":257,"line":322},[255,4130,420],{"class":269},[255,4132,4133,4135],{"class":257,"line":334},[255,4134,426],{"class":302},[255,4136,3966],{"class":295},[255,4138,4139],{"class":257,"line":423},[255,4140,434],{"class":269},[245,4142,4144],{"className":531,"code":4143,"filename":533,"language":534,"meta":251,"style":251},"int find_max(List\u003Cint> nums) {\n  var best = nums[0];\n  for (final x in nums) {\n    if (x > best) best = x;\n  }\n  return best;\n}\n",[218,4145,4146,4163,4179,4194,4211,4215,4223],{"__ignoreMap":251},[255,4147,4148,4150,4152,4154,4156,4158,4160],{"class":257,"line":258},[255,4149,541],{"class":361},[255,4151,3898],{"class":265},[255,4153,315],{"class":295},[255,4155,3309],{"class":361},[255,4157,591],{"class":295},[255,4159,541],{"class":361},[255,4161,4162],{"class":295},"> nums) {\n",[255,4164,4165,4167,4169,4171,4173,4175,4177],{"class":257,"line":279},[255,4166,555],{"class":261},[255,4168,3994],{"class":295},[255,4170,381],{"class":269},[255,4172,3999],{"class":295},[255,4174,3918],{"class":288},[255,4176,3258],{"class":295},[255,4178,564],{"class":269},[255,4180,4181,4183,4185,4188,4190,4192],{"class":257,"line":292},[255,4182,303],{"class":302},[255,4184,270],{"class":295},[255,4186,4187],{"class":261},"final",[255,4189,3927],{"class":295},[255,4191,309],{"class":302},[255,4193,4015],{"class":295},[255,4195,4196,4198,4200,4202,4204,4206,4209],{"class":257,"line":299},[255,4197,3939],{"class":302},[255,4199,4010],{"class":295},[255,4201,3944],{"class":269},[255,4203,4027],{"class":295},[255,4205,381],{"class":269},[255,4207,4208],{"class":295}," x",[255,4210,564],{"class":269},[255,4212,4213],{"class":257,"line":322},[255,4214,620],{"class":295},[255,4216,4217,4219,4221],{"class":257,"line":334},[255,4218,337],{"class":302},[255,4220,3947],{"class":295},[255,4222,564],{"class":269},[255,4224,4225],{"class":257,"line":423},[255,4226,434],{"class":295},[245,4228,4230],{"className":636,"code":4229,"filename":638,"language":639,"meta":251,"style":251},"function find_max(nums) {\n  let best = nums[0];\n  for (const x of nums) {\n    if (x > best) best = x;\n  }\n  return best;\n}\n",[218,4231,4232,4246,4264,4284,4309,4313,4321],{"__ignoreMap":251},[255,4233,4234,4236,4238,4240,4242,4244],{"class":257,"line":258},[255,4235,646],{"class":261},[255,4237,3898],{"class":265},[255,4239,315],{"class":269},[255,4241,3169],{"class":273},[255,4243,465],{"class":269},[255,4245,370],{"class":269},[255,4247,4248,4250,4252,4254,4256,4258,4260,4262],{"class":257,"line":279},[255,4249,661],{"class":261},[255,4251,3947],{"class":295},[255,4253,285],{"class":269},[255,4255,3184],{"class":295},[255,4257,3187],{"class":680},[255,4259,3918],{"class":288},[255,4261,3258],{"class":680},[255,4263,564],{"class":269},[255,4265,4266,4268,4270,4273,4275,4278,4280,4282],{"class":257,"line":292},[255,4267,303],{"class":302},[255,4269,270],{"class":680},[255,4271,4272],{"class":261},"const",[255,4274,4208],{"class":295},[255,4276,4277],{"class":269}," of",[255,4279,3184],{"class":295},[255,4281,707],{"class":680},[255,4283,506],{"class":269},[255,4285,4286,4288,4290,4293,4296,4298,4300,4303,4305,4307],{"class":257,"line":299},[255,4287,3939],{"class":302},[255,4289,270],{"class":680},[255,4291,4292],{"class":295},"x",[255,4294,4295],{"class":269}," >",[255,4297,3947],{"class":295},[255,4299,707],{"class":680},[255,4301,4302],{"class":295},"best",[255,4304,285],{"class":269},[255,4306,4208],{"class":295},[255,4308,564],{"class":269},[255,4310,4311],{"class":257,"line":322},[255,4312,620],{"class":269},[255,4314,4315,4317,4319],{"class":257,"line":334},[255,4316,337],{"class":302},[255,4318,3947],{"class":295},[255,4320,564],{"class":269},[255,4322,4323],{"class":257,"line":423},[255,4324,434],{"class":269},[3144,4326,4328],{"id":4327},"on-log-n-线性对数归并排序","O(n log n) 线性对数：归并排序",[183,4330,4331],{},"先把数组对半拆开，拆到底再两两合并。拆分大约有 log n 层，每一层都要把 n 个数扫一遍，合起来就是 O(n log n)。归并排序每次都是这个量级。",[242,4333,4334,4636,4911,5238,5554],{},[245,4335,4337],{"className":247,"code":4336,"filename":249,"language":250,"meta":251,"style":251},"def merge_sort(nums):\n  if len(nums) \u003C= 1:\n    return nums\n  mid = len(nums) \u002F\u002F 2\n  left = merge_sort(nums[:mid])\n  right = merge_sort(nums[mid:])\n  merged = []\n  i = j = 0\n  while i \u003C len(left) and j \u003C len(right):\n    if left[i] \u003C= right[j]:\n      merged.append(left[i])\n      i += 1\n    else:\n      merged.append(right[j])\n      j += 1\n  merged.extend(left[i:])\n  merged.extend(right[j:])\n  return merged\n",[218,4338,4339,4352,4373,4380,4401,4423,4443,4453,4466,4499,4526,4547,4557,4564,4582,4591,4611,4629],{"__ignoreMap":251},[255,4340,4341,4343,4346,4348,4350],{"class":257,"line":258},[255,4342,262],{"class":261},[255,4344,4345],{"class":265}," merge_sort",[255,4347,315],{"class":269},[255,4349,3169],{"class":273},[255,4351,276],{"class":269},[255,4353,4354,4357,4360,4362,4364,4366,4369,4371],{"class":257,"line":279},[255,4355,4356],{"class":302},"  if",[255,4358,4359],{"class":265}," len",[255,4361,315],{"class":269},[255,4363,3169],{"class":265},[255,4365,465],{"class":269},[255,4367,4368],{"class":269}," \u003C=",[255,4370,3424],{"class":288},[255,4372,3934],{"class":269},[255,4374,4375,4377],{"class":257,"line":292},[255,4376,426],{"class":302},[255,4378,4379],{"class":295}," nums\n",[255,4381,4382,4385,4387,4389,4391,4393,4395,4398],{"class":257,"line":299},[255,4383,4384],{"class":295},"  mid ",[255,4386,381],{"class":269},[255,4388,4359],{"class":265},[255,4390,315],{"class":269},[255,4392,3169],{"class":265},[255,4394,465],{"class":269},[255,4396,4397],{"class":269}," \u002F\u002F",[255,4399,4400],{"class":288}," 2\n",[255,4402,4403,4406,4408,4410,4412,4414,4417,4420],{"class":257,"line":322},[255,4404,4405],{"class":295},"  left ",[255,4407,381],{"class":269},[255,4409,4345],{"class":265},[255,4411,315],{"class":269},[255,4413,3169],{"class":265},[255,4415,4416],{"class":269},"[:",[255,4418,4419],{"class":265},"mid",[255,4421,4422],{"class":269},"])\n",[255,4424,4425,4428,4430,4432,4434,4436,4438,4440],{"class":257,"line":334},[255,4426,4427],{"class":295},"  right ",[255,4429,381],{"class":269},[255,4431,4345],{"class":265},[255,4433,315],{"class":269},[255,4435,3169],{"class":265},[255,4437,3187],{"class":269},[255,4439,4419],{"class":265},[255,4441,4442],{"class":269},":])\n",[255,4444,4445,4448,4450],{"class":257,"line":423},[255,4446,4447],{"class":295},"  merged ",[255,4449,381],{"class":269},[255,4451,4452],{"class":269}," []\n",[255,4454,4455,4458,4460,4462,4464],{"class":257,"line":431},[255,4456,4457],{"class":295},"  i ",[255,4459,381],{"class":269},[255,4461,1741],{"class":295},[255,4463,381],{"class":269},[255,4465,289],{"class":288},[255,4467,4468,4470,4472,4474,4476,4478,4481,4483,4486,4488,4490,4492,4494,4497],{"class":257,"line":1000},[255,4469,3437],{"class":302},[255,4471,883],{"class":295},[255,4473,591],{"class":269},[255,4475,4359],{"class":265},[255,4477,315],{"class":269},[255,4479,4480],{"class":265},"left",[255,4482,465],{"class":269},[255,4484,4485],{"class":269}," and",[255,4487,1741],{"class":295},[255,4489,591],{"class":269},[255,4491,4359],{"class":265},[255,4493,315],{"class":269},[255,4495,4496],{"class":265},"right",[255,4498,276],{"class":269},[255,4500,4501,4503,4506,4508,4511,4513,4515,4518,4520,4523],{"class":257,"line":1007},[255,4502,3939],{"class":302},[255,4504,4505],{"class":295}," left",[255,4507,3187],{"class":269},[255,4509,4510],{"class":295},"i",[255,4512,3258],{"class":269},[255,4514,4368],{"class":269},[255,4516,4517],{"class":295}," right",[255,4519,3187],{"class":269},[255,4521,4522],{"class":295},"j",[255,4524,4525],{"class":269},"]:\n",[255,4527,4528,4531,4534,4537,4539,4541,4543,4545],{"class":257,"line":1690},[255,4529,4530],{"class":295},"      merged",[255,4532,4533],{"class":269},".",[255,4535,4536],{"class":265},"append",[255,4538,315],{"class":269},[255,4540,4480],{"class":265},[255,4542,3187],{"class":269},[255,4544,4510],{"class":265},[255,4546,4422],{"class":269},[255,4548,4549,4552,4554],{"class":257,"line":1700},[255,4550,4551],{"class":295},"      i ",[255,4553,413],{"class":269},[255,4555,4556],{"class":288}," 1\n",[255,4558,4559,4562],{"class":257,"line":1718},[255,4560,4561],{"class":302},"    else",[255,4563,3934],{"class":269},[255,4565,4566,4568,4570,4572,4574,4576,4578,4580],{"class":257,"line":1735},[255,4567,4530],{"class":295},[255,4569,4533],{"class":269},[255,4571,4536],{"class":265},[255,4573,315],{"class":269},[255,4575,4496],{"class":265},[255,4577,3187],{"class":269},[255,4579,4522],{"class":265},[255,4581,4422],{"class":269},[255,4583,4584,4587,4589],{"class":257,"line":1754},[255,4585,4586],{"class":295},"      j ",[255,4588,413],{"class":269},[255,4590,4556],{"class":288},[255,4592,4593,4596,4598,4601,4603,4605,4607,4609],{"class":257,"line":1773},[255,4594,4595],{"class":295},"  merged",[255,4597,4533],{"class":269},[255,4599,4600],{"class":265},"extend",[255,4602,315],{"class":269},[255,4604,4480],{"class":265},[255,4606,3187],{"class":269},[255,4608,4510],{"class":265},[255,4610,4442],{"class":269},[255,4612,4613,4615,4617,4619,4621,4623,4625,4627],{"class":257,"line":1778},[255,4614,4595],{"class":295},[255,4616,4533],{"class":269},[255,4618,4600],{"class":265},[255,4620,315],{"class":269},[255,4622,4496],{"class":265},[255,4624,3187],{"class":269},[255,4626,4522],{"class":265},[255,4628,4442],{"class":269},[255,4630,4631,4633],{"class":257,"line":1965},[255,4632,337],{"class":302},[255,4634,4635],{"class":295}," merged\n",[245,4637,4639],{"className":343,"code":4638,"filename":345,"language":346,"meta":251,"style":251},"fun merge_sort(nums: List\u003CInt>): List\u003CInt> {\n    if (nums.size \u003C= 1) return nums\n    val mid = nums.size \u002F 2\n    val left = merge_sort(nums.subList(0, mid))\n    val right = merge_sort(nums.subList(mid, nums.size))\n    val merged = mutableListOf\u003CInt>()\n    var i = 0\n    var j = 0\n    while (i \u003C left.size && j \u003C right.size) {\n        if (left[i] \u003C= right[j]) {\n            merged.add(left[i])\n            i++\n        } else {\n            merged.add(right[j])\n            j++\n        }\n    }\n    merged.addAll(left.subList(i, left.size))\n    merged.addAll(right.subList(j, right.size))\n    return merged\n}\n",[218,4640,4641,4667,4686,4704,4728,4746,4765,4775,4785,4806,4818,4829,4837,4847,4856,4863,4867,4871,4887,4901,4907],{"__ignoreMap":251},[255,4642,4643,4645,4647,4649,4651,4653,4655,4658,4660,4662,4664],{"class":257,"line":258},[255,4644,353],{"class":269},[255,4646,4345],{"class":265},[255,4648,3207],{"class":295},[255,4650,3309],{"class":361},[255,4652,591],{"class":295},[255,4654,362],{"class":361},[255,4656,4657],{"class":295},">): ",[255,4659,3309],{"class":361},[255,4661,591],{"class":295},[255,4663,362],{"class":361},[255,4665,4666],{"class":295},"> {\n",[255,4668,4669,4671,4674,4677,4679,4681,4684],{"class":257,"line":279},[255,4670,3939],{"class":302},[255,4672,4673],{"class":295}," (nums.size ",[255,4675,4676],{"class":269},"\u003C=",[255,4678,3424],{"class":288},[255,4680,707],{"class":295},[255,4682,4683],{"class":302},"return",[255,4685,4379],{"class":295},[255,4687,4688,4691,4694,4696,4699,4702],{"class":257,"line":292},[255,4689,4690],{"class":269},"    val",[255,4692,4693],{"class":295}," mid ",[255,4695,381],{"class":269},[255,4697,4698],{"class":295}," nums.size ",[255,4700,4701],{"class":269},"\u002F",[255,4703,4400],{"class":288},[255,4705,4706,4708,4711,4713,4715,4718,4721,4723,4725],{"class":257,"line":299},[255,4707,4690],{"class":269},[255,4709,4710],{"class":295}," left ",[255,4712,381],{"class":269},[255,4714,4345],{"class":265},[255,4716,4717],{"class":295},"(nums.",[255,4719,4720],{"class":265},"subList",[255,4722,315],{"class":295},[255,4724,3918],{"class":288},[255,4726,4727],{"class":295},", mid))\n",[255,4729,4730,4732,4735,4737,4739,4741,4743],{"class":257,"line":322},[255,4731,4690],{"class":269},[255,4733,4734],{"class":295}," right ",[255,4736,381],{"class":269},[255,4738,4345],{"class":265},[255,4740,4717],{"class":295},[255,4742,4720],{"class":265},[255,4744,4745],{"class":295},"(mid, nums.size))\n",[255,4747,4748,4750,4753,4755,4758,4760,4762],{"class":257,"line":334},[255,4749,4690],{"class":269},[255,4751,4752],{"class":295}," merged ",[255,4754,381],{"class":269},[255,4756,4757],{"class":265}," mutableListOf",[255,4759,591],{"class":295},[255,4761,362],{"class":361},[255,4763,4764],{"class":295},">()\n",[255,4766,4767,4769,4771,4773],{"class":257,"line":423},[255,4768,375],{"class":269},[255,4770,883],{"class":295},[255,4772,381],{"class":269},[255,4774,289],{"class":288},[255,4776,4777,4779,4781,4783],{"class":257,"line":431},[255,4778,375],{"class":269},[255,4780,1741],{"class":295},[255,4782,381],{"class":269},[255,4784,289],{"class":288},[255,4786,4787,4789,4791,4793,4796,4799,4801,4803],{"class":257,"line":1000},[255,4788,3515],{"class":302},[255,4790,969],{"class":295},[255,4792,591],{"class":269},[255,4794,4795],{"class":295}," left.size ",[255,4797,4798],{"class":269},"&&",[255,4800,1741],{"class":295},[255,4802,591],{"class":269},[255,4804,4805],{"class":295}," right.size) {\n",[255,4807,4808,4810,4813,4815],{"class":257,"line":1007},[255,4809,4020],{"class":302},[255,4811,4812],{"class":295}," (left[i] ",[255,4814,4676],{"class":269},[255,4816,4817],{"class":295}," right[j]) {\n",[255,4819,4820,4823,4826],{"class":257,"line":1690},[255,4821,4822],{"class":295},"            merged.",[255,4824,4825],{"class":265},"add",[255,4827,4828],{"class":295},"(left[i])\n",[255,4830,4831,4834],{"class":257,"line":1700},[255,4832,4833],{"class":295},"            i",[255,4835,4836],{"class":269},"++\n",[255,4838,4839,4842,4845],{"class":257,"line":1718},[255,4840,4841],{"class":295},"        } ",[255,4843,4844],{"class":302},"else",[255,4846,370],{"class":295},[255,4848,4849,4851,4853],{"class":257,"line":1735},[255,4850,4822],{"class":295},[255,4852,4825],{"class":265},[255,4854,4855],{"class":295},"(right[j])\n",[255,4857,4858,4861],{"class":257,"line":1754},[255,4859,4860],{"class":295},"            j",[255,4862,4836],{"class":269},[255,4864,4865],{"class":257,"line":1773},[255,4866,993],{"class":295},[255,4868,4869],{"class":257,"line":1778},[255,4870,420],{"class":295},[255,4872,4873,4876,4879,4882,4884],{"class":257,"line":1965},[255,4874,4875],{"class":295},"    merged.",[255,4877,4878],{"class":265},"addAll",[255,4880,4881],{"class":295},"(left.",[255,4883,4720],{"class":265},[255,4885,4886],{"class":295},"(i, left.size))\n",[255,4888,4889,4891,4893,4896,4898],{"class":257,"line":1982},[255,4890,4875],{"class":295},[255,4892,4878],{"class":265},[255,4894,4895],{"class":295},"(right.",[255,4897,4720],{"class":265},[255,4899,4900],{"class":295},"(j, right.size))\n",[255,4902,4903,4905],{"class":257,"line":1988},[255,4904,426],{"class":302},[255,4906,4635],{"class":295},[255,4908,4909],{"class":257,"line":1993},[255,4910,434],{"class":295},[245,4912,4914],{"className":437,"code":4913,"filename":439,"language":440,"meta":251,"style":251},"func merge_sort(_ nums: [Int]) -> [Int] {\n    if nums.count \u003C= 1 { return nums }\n    let mid = nums.count \u002F 2\n    let left = merge_sort(Array(nums[..\u003Cmid]))\n    let right = merge_sort(Array(nums[mid...]))\n    var merged: [Int] = []\n    var i = 0\n    var j = 0\n    while i \u003C left.count && j \u003C right.count {\n        if left[i] \u003C= right[j] {\n            merged.append(left[i])\n            i += 1\n        } else {\n            merged.append(right[j])\n            j += 1\n        }\n    }\n    merged.append(contentsOf: left[i...])\n    merged.append(contentsOf: right[j...])\n    return merged\n}\n",[218,4915,4916,4947,4968,4983,5010,5035,5052,5062,5072,5094,5118,5134,5143,5153,5169,5178,5182,5186,5208,5228,5234],{"__ignoreMap":251},[255,4917,4918,4920,4922,4924,4926,4928,4930,4932,4934,4936,4938,4941,4943,4945],{"class":257,"line":258},[255,4919,447],{"class":261},[255,4921,4345],{"class":265},[255,4923,315],{"class":269},[255,4925,454],{"class":265},[255,4927,3184],{"class":273},[255,4929,460],{"class":295},[255,4931,3187],{"class":269},[255,4933,362],{"class":361},[255,4935,4071],{"class":269},[255,4937,468],{"class":269},[255,4939,4940],{"class":269}," [",[255,4942,362],{"class":361},[255,4944,3258],{"class":269},[255,4946,370],{"class":269},[255,4948,4949,4951,4954,4956,4958,4961,4964,4966],{"class":257,"line":279},[255,4950,3939],{"class":302},[255,4952,4953],{"class":295}," nums.count ",[255,4955,4676],{"class":269},[255,4957,3424],{"class":288},[255,4959,4960],{"class":269}," {",[255,4962,4963],{"class":302}," return",[255,4965,4104],{"class":295},[255,4967,434],{"class":269},[255,4969,4970,4973,4975,4977,4979,4981],{"class":257,"line":292},[255,4971,4972],{"class":288},"    let",[255,4974,4693],{"class":295},[255,4976,381],{"class":269},[255,4978,4953],{"class":295},[255,4980,4701],{"class":269},[255,4982,4400],{"class":288},[255,4984,4985,4987,4989,4991,4993,4995,4998,5000,5002,5005,5007],{"class":257,"line":299},[255,4986,4972],{"class":288},[255,4988,4710],{"class":295},[255,4990,381],{"class":269},[255,4992,4345],{"class":265},[255,4994,315],{"class":269},[255,4996,4997],{"class":361},"Array",[255,4999,315],{"class":269},[255,5001,3169],{"class":295},[255,5003,5004],{"class":269},"[..\u003C",[255,5006,4419],{"class":295},[255,5008,5009],{"class":269},"]))\n",[255,5011,5012,5014,5016,5018,5020,5022,5024,5026,5028,5030,5032],{"class":257,"line":322},[255,5013,4972],{"class":288},[255,5015,4734],{"class":295},[255,5017,381],{"class":269},[255,5019,4345],{"class":265},[255,5021,315],{"class":269},[255,5023,4997],{"class":361},[255,5025,315],{"class":269},[255,5027,3169],{"class":295},[255,5029,3187],{"class":269},[255,5031,4419],{"class":295},[255,5033,5034],{"class":269},"...]))\n",[255,5036,5037,5039,5042,5044,5046,5048,5050],{"class":257,"line":334},[255,5038,375],{"class":288},[255,5040,5041],{"class":295}," merged: ",[255,5043,3187],{"class":269},[255,5045,362],{"class":361},[255,5047,3258],{"class":269},[255,5049,285],{"class":269},[255,5051,4452],{"class":295},[255,5053,5054,5056,5058,5060],{"class":257,"line":423},[255,5055,375],{"class":288},[255,5057,883],{"class":295},[255,5059,381],{"class":269},[255,5061,289],{"class":288},[255,5063,5064,5066,5068,5070],{"class":257,"line":431},[255,5065,375],{"class":288},[255,5067,1741],{"class":295},[255,5069,381],{"class":269},[255,5071,289],{"class":288},[255,5073,5074,5076,5078,5080,5083,5085,5087,5089,5092],{"class":257,"line":1000},[255,5075,3515],{"class":302},[255,5077,883],{"class":295},[255,5079,591],{"class":269},[255,5081,5082],{"class":295}," left.count ",[255,5084,4798],{"class":269},[255,5086,1741],{"class":295},[255,5088,591],{"class":269},[255,5090,5091],{"class":295}," right.count ",[255,5093,506],{"class":269},[255,5095,5096,5098,5100,5102,5104,5106,5108,5110,5112,5114,5116],{"class":257,"line":1007},[255,5097,4020],{"class":302},[255,5099,4505],{"class":295},[255,5101,3187],{"class":269},[255,5103,4510],{"class":295},[255,5105,3258],{"class":269},[255,5107,4368],{"class":269},[255,5109,4517],{"class":295},[255,5111,3187],{"class":269},[255,5113,4522],{"class":295},[255,5115,3258],{"class":269},[255,5117,370],{"class":269},[255,5119,5120,5122,5124,5126,5128,5130,5132],{"class":257,"line":1690},[255,5121,4822],{"class":295},[255,5123,4536],{"class":265},[255,5125,315],{"class":269},[255,5127,4480],{"class":295},[255,5129,3187],{"class":269},[255,5131,4510],{"class":295},[255,5133,4422],{"class":269},[255,5135,5136,5139,5141],{"class":257,"line":1700},[255,5137,5138],{"class":295},"            i ",[255,5140,413],{"class":269},[255,5142,4556],{"class":288},[255,5144,5145,5148,5151],{"class":257,"line":1718},[255,5146,5147],{"class":269},"        }",[255,5149,5150],{"class":302}," else",[255,5152,370],{"class":269},[255,5154,5155,5157,5159,5161,5163,5165,5167],{"class":257,"line":1735},[255,5156,4822],{"class":295},[255,5158,4536],{"class":265},[255,5160,315],{"class":269},[255,5162,4496],{"class":295},[255,5164,3187],{"class":269},[255,5166,4522],{"class":295},[255,5168,4422],{"class":269},[255,5170,5171,5174,5176],{"class":257,"line":1754},[255,5172,5173],{"class":295},"            j ",[255,5175,413],{"class":269},[255,5177,4556],{"class":288},[255,5179,5180],{"class":257,"line":1773},[255,5181,993],{"class":269},[255,5183,5184],{"class":257,"line":1778},[255,5185,420],{"class":269},[255,5187,5188,5190,5192,5194,5197,5199,5201,5203,5205],{"class":257,"line":1965},[255,5189,4875],{"class":295},[255,5191,4536],{"class":265},[255,5193,315],{"class":269},[255,5195,5196],{"class":265},"contentsOf",[255,5198,3446],{"class":269},[255,5200,4505],{"class":295},[255,5202,3187],{"class":269},[255,5204,4510],{"class":295},[255,5206,5207],{"class":269},"...])\n",[255,5209,5210,5212,5214,5216,5218,5220,5222,5224,5226],{"class":257,"line":1982},[255,5211,4875],{"class":295},[255,5213,4536],{"class":265},[255,5215,315],{"class":269},[255,5217,5196],{"class":265},[255,5219,3446],{"class":269},[255,5221,4517],{"class":295},[255,5223,3187],{"class":269},[255,5225,4522],{"class":295},[255,5227,5207],{"class":269},[255,5229,5230,5232],{"class":257,"line":1988},[255,5231,426],{"class":302},[255,5233,4635],{"class":295},[255,5235,5236],{"class":257,"line":1993},[255,5237,434],{"class":269},[245,5239,5241],{"className":531,"code":5240,"filename":533,"language":534,"meta":251,"style":251},"List\u003Cint> merge_sort(List\u003Cint> nums) {\n  if (nums.length \u003C= 1) return nums;\n  final mid = nums.length ~\u002F 2;\n  final left = merge_sort(nums.sublist(0, mid));\n  final right = merge_sort(nums.sublist(mid));\n  final merged = \u003Cint>[];\n  var i = 0;\n  var j = 0;\n  while (i \u003C left.length && j \u003C right.length) {\n    if (left[i] \u003C= right[j]) {\n      merged.add(left[i]);\n      i++;\n    } else {\n      merged.add(right[j]);\n      j++;\n    }\n  }\n  merged.addAll(left.sublist(i));\n  merged.addAll(right.sublist(j));\n  return merged;\n}\n",[218,5242,5243,5267,5291,5313,5342,5363,5382,5394,5406,5433,5443,5456,5464,5473,5486,5493,5497,5501,5521,5541,5550],{"__ignoreMap":251},[255,5244,5245,5247,5249,5251,5254,5257,5259,5261,5263,5265],{"class":257,"line":258},[255,5246,3309],{"class":361},[255,5248,591],{"class":295},[255,5250,541],{"class":361},[255,5252,5253],{"class":295},"> ",[255,5255,5256],{"class":265},"merge_sort",[255,5258,315],{"class":295},[255,5260,3309],{"class":361},[255,5262,591],{"class":295},[255,5264,541],{"class":361},[255,5266,4162],{"class":295},[255,5268,5269,5271,5274,5276,5279,5281,5283,5285,5287,5289],{"class":257,"line":279},[255,5270,4356],{"class":302},[255,5272,5273],{"class":295}," (nums",[255,5275,4533],{"class":269},[255,5277,5278],{"class":295},"length ",[255,5280,4676],{"class":269},[255,5282,3424],{"class":288},[255,5284,707],{"class":295},[255,5286,4683],{"class":302},[255,5288,3184],{"class":295},[255,5290,564],{"class":269},[255,5292,5293,5296,5298,5300,5302,5304,5306,5309,5311],{"class":257,"line":292},[255,5294,5295],{"class":261},"  final",[255,5297,4693],{"class":295},[255,5299,381],{"class":269},[255,5301,3184],{"class":295},[255,5303,4533],{"class":269},[255,5305,5278],{"class":295},[255,5307,5308],{"class":269},"~\u002F",[255,5310,3463],{"class":288},[255,5312,564],{"class":269},[255,5314,5315,5317,5319,5321,5323,5326,5328,5331,5333,5335,5337,5340],{"class":257,"line":299},[255,5316,5295],{"class":261},[255,5318,4710],{"class":295},[255,5320,381],{"class":269},[255,5322,4345],{"class":265},[255,5324,5325],{"class":295},"(nums",[255,5327,4533],{"class":269},[255,5329,5330],{"class":265},"sublist",[255,5332,315],{"class":295},[255,5334,3918],{"class":288},[255,5336,3172],{"class":269},[255,5338,5339],{"class":295}," mid))",[255,5341,564],{"class":269},[255,5343,5344,5346,5348,5350,5352,5354,5356,5358,5361],{"class":257,"line":322},[255,5345,5295],{"class":261},[255,5347,4734],{"class":295},[255,5349,381],{"class":269},[255,5351,4345],{"class":265},[255,5353,5325],{"class":295},[255,5355,4533],{"class":269},[255,5357,5330],{"class":265},[255,5359,5360],{"class":295},"(mid))",[255,5362,564],{"class":269},[255,5364,5365,5367,5369,5371,5373,5375,5377,5380],{"class":257,"line":334},[255,5366,5295],{"class":261},[255,5368,4752],{"class":295},[255,5370,381],{"class":269},[255,5372,696],{"class":269},[255,5374,541],{"class":361},[255,5376,3944],{"class":269},[255,5378,5379],{"class":295},"[]",[255,5381,564],{"class":269},[255,5383,5384,5386,5388,5390,5392],{"class":257,"line":423},[255,5385,555],{"class":261},[255,5387,883],{"class":295},[255,5389,381],{"class":269},[255,5391,402],{"class":288},[255,5393,564],{"class":269},[255,5395,5396,5398,5400,5402,5404],{"class":257,"line":431},[255,5397,555],{"class":261},[255,5399,1741],{"class":295},[255,5401,381],{"class":269},[255,5403,402],{"class":288},[255,5405,564],{"class":269},[255,5407,5408,5410,5412,5414,5416,5418,5420,5422,5424,5426,5428,5430],{"class":257,"line":1000},[255,5409,3437],{"class":302},[255,5411,969],{"class":295},[255,5413,591],{"class":269},[255,5415,4505],{"class":295},[255,5417,4533],{"class":269},[255,5419,5278],{"class":295},[255,5421,4798],{"class":269},[255,5423,1741],{"class":295},[255,5425,591],{"class":269},[255,5427,4517],{"class":295},[255,5429,4533],{"class":269},[255,5431,5432],{"class":295},"length) {\n",[255,5434,5435,5437,5439,5441],{"class":257,"line":1007},[255,5436,3939],{"class":302},[255,5438,4812],{"class":295},[255,5440,4676],{"class":269},[255,5442,4817],{"class":295},[255,5444,5445,5447,5449,5451,5454],{"class":257,"line":1690},[255,5446,4530],{"class":295},[255,5448,4533],{"class":269},[255,5450,4825],{"class":265},[255,5452,5453],{"class":295},"(left[i])",[255,5455,564],{"class":269},[255,5457,5458,5461],{"class":257,"line":1700},[255,5459,5460],{"class":295},"      i",[255,5462,5463],{"class":269},"++;\n",[255,5465,5466,5469,5471],{"class":257,"line":1718},[255,5467,5468],{"class":295},"    } ",[255,5470,4844],{"class":302},[255,5472,370],{"class":295},[255,5474,5475,5477,5479,5481,5484],{"class":257,"line":1735},[255,5476,4530],{"class":295},[255,5478,4533],{"class":269},[255,5480,4825],{"class":265},[255,5482,5483],{"class":295},"(right[j])",[255,5485,564],{"class":269},[255,5487,5488,5491],{"class":257,"line":1754},[255,5489,5490],{"class":295},"      j",[255,5492,5463],{"class":269},[255,5494,5495],{"class":257,"line":1773},[255,5496,420],{"class":295},[255,5498,5499],{"class":257,"line":1778},[255,5500,620],{"class":295},[255,5502,5503,5505,5507,5509,5512,5514,5516,5519],{"class":257,"line":1965},[255,5504,4595],{"class":295},[255,5506,4533],{"class":269},[255,5508,4878],{"class":265},[255,5510,5511],{"class":295},"(left",[255,5513,4533],{"class":269},[255,5515,5330],{"class":265},[255,5517,5518],{"class":295},"(i))",[255,5520,564],{"class":269},[255,5522,5523,5525,5527,5529,5532,5534,5536,5539],{"class":257,"line":1982},[255,5524,4595],{"class":295},[255,5526,4533],{"class":269},[255,5528,4878],{"class":265},[255,5530,5531],{"class":295},"(right",[255,5533,4533],{"class":269},[255,5535,5330],{"class":265},[255,5537,5538],{"class":295},"(j))",[255,5540,564],{"class":269},[255,5542,5543,5545,5548],{"class":257,"line":1988},[255,5544,337],{"class":302},[255,5546,5547],{"class":295}," merged",[255,5549,564],{"class":269},[255,5551,5552],{"class":257,"line":1993},[255,5553,434],{"class":295},[245,5555,5557],{"className":636,"code":5556,"filename":638,"language":639,"meta":251,"style":251},"function merge_sort(nums) {\n  if (nums.length \u003C= 1) return nums;\n  const mid = Math.floor(nums.length \u002F 2);\n  const left = merge_sort(nums.slice(0, mid));\n  const right = merge_sort(nums.slice(mid));\n  const merged = [];\n  let i = 0;\n  let j = 0;\n  while (i \u003C left.length && j \u003C right.length) {\n    if (left[i] \u003C= right[j]) {\n      merged.push(left[i]);\n      i++;\n    } else {\n      merged.push(right[j]);\n      j++;\n    }\n  }\n  return merged.concat(left.slice(i), right.slice(j));\n}\n",[218,5558,5559,5573,5598,5633,5665,5691,5704,5716,5728,5761,5789,5810,5816,5825,5845,5851,5855,5859,5900],{"__ignoreMap":251},[255,5560,5561,5563,5565,5567,5569,5571],{"class":257,"line":258},[255,5562,646],{"class":261},[255,5564,4345],{"class":265},[255,5566,315],{"class":269},[255,5568,3169],{"class":273},[255,5570,465],{"class":269},[255,5572,370],{"class":269},[255,5574,5575,5577,5579,5581,5583,5586,5588,5590,5592,5594,5596],{"class":257,"line":279},[255,5576,4356],{"class":302},[255,5578,270],{"class":680},[255,5580,3169],{"class":295},[255,5582,4533],{"class":269},[255,5584,5585],{"class":295},"length",[255,5587,4368],{"class":269},[255,5589,3424],{"class":288},[255,5591,707],{"class":680},[255,5593,4683],{"class":302},[255,5595,3184],{"class":295},[255,5597,564],{"class":269},[255,5599,5600,5603,5606,5608,5611,5613,5616,5618,5620,5622,5624,5627,5629,5631],{"class":257,"line":292},[255,5601,5602],{"class":261},"  const",[255,5604,5605],{"class":295}," mid",[255,5607,285],{"class":269},[255,5609,5610],{"class":295}," Math",[255,5612,4533],{"class":269},[255,5614,5615],{"class":265},"floor",[255,5617,315],{"class":680},[255,5619,3169],{"class":295},[255,5621,4533],{"class":269},[255,5623,5585],{"class":295},[255,5625,5626],{"class":269}," \u002F",[255,5628,3463],{"class":288},[255,5630,465],{"class":680},[255,5632,564],{"class":269},[255,5634,5635,5637,5639,5641,5643,5645,5647,5649,5652,5654,5656,5658,5660,5663],{"class":257,"line":299},[255,5636,5602],{"class":261},[255,5638,4505],{"class":295},[255,5640,285],{"class":269},[255,5642,4345],{"class":265},[255,5644,315],{"class":680},[255,5646,3169],{"class":295},[255,5648,4533],{"class":269},[255,5650,5651],{"class":265},"slice",[255,5653,315],{"class":680},[255,5655,3918],{"class":288},[255,5657,3172],{"class":269},[255,5659,5605],{"class":295},[255,5661,5662],{"class":680},"))",[255,5664,564],{"class":269},[255,5666,5667,5669,5671,5673,5675,5677,5679,5681,5683,5685,5687,5689],{"class":257,"line":322},[255,5668,5602],{"class":261},[255,5670,4517],{"class":295},[255,5672,285],{"class":269},[255,5674,4345],{"class":265},[255,5676,315],{"class":680},[255,5678,3169],{"class":295},[255,5680,4533],{"class":269},[255,5682,5651],{"class":265},[255,5684,315],{"class":680},[255,5686,4419],{"class":295},[255,5688,5662],{"class":680},[255,5690,564],{"class":269},[255,5692,5693,5695,5697,5699,5702],{"class":257,"line":334},[255,5694,5602],{"class":261},[255,5696,5547],{"class":295},[255,5698,285],{"class":269},[255,5700,5701],{"class":680}," []",[255,5703,564],{"class":269},[255,5705,5706,5708,5710,5712,5714],{"class":257,"line":423},[255,5707,661],{"class":261},[255,5709,1204],{"class":295},[255,5711,285],{"class":269},[255,5713,402],{"class":288},[255,5715,564],{"class":269},[255,5717,5718,5720,5722,5724,5726],{"class":257,"line":431},[255,5719,661],{"class":261},[255,5721,2544],{"class":295},[255,5723,285],{"class":269},[255,5725,402],{"class":288},[255,5727,564],{"class":269},[255,5729,5730,5732,5734,5736,5738,5740,5742,5744,5747,5749,5751,5753,5755,5757,5759],{"class":257,"line":1000},[255,5731,3437],{"class":302},[255,5733,270],{"class":680},[255,5735,4510],{"class":295},[255,5737,696],{"class":269},[255,5739,4505],{"class":295},[255,5741,4533],{"class":269},[255,5743,5585],{"class":295},[255,5745,5746],{"class":269}," &&",[255,5748,2544],{"class":295},[255,5750,696],{"class":269},[255,5752,4517],{"class":295},[255,5754,4533],{"class":269},[255,5756,5585],{"class":295},[255,5758,707],{"class":680},[255,5760,506],{"class":269},[255,5762,5763,5765,5767,5769,5771,5773,5776,5778,5780,5782,5784,5787],{"class":257,"line":1007},[255,5764,3939],{"class":302},[255,5766,270],{"class":680},[255,5768,4480],{"class":295},[255,5770,3187],{"class":680},[255,5772,4510],{"class":295},[255,5774,5775],{"class":680},"] ",[255,5777,4676],{"class":269},[255,5779,4517],{"class":295},[255,5781,3187],{"class":680},[255,5783,4522],{"class":295},[255,5785,5786],{"class":680},"]) ",[255,5788,506],{"class":269},[255,5790,5791,5793,5795,5798,5800,5802,5804,5806,5808],{"class":257,"line":1690},[255,5792,4530],{"class":295},[255,5794,4533],{"class":269},[255,5796,5797],{"class":265},"push",[255,5799,315],{"class":680},[255,5801,4480],{"class":295},[255,5803,3187],{"class":680},[255,5805,4510],{"class":295},[255,5807,4071],{"class":680},[255,5809,564],{"class":269},[255,5811,5812,5814],{"class":257,"line":1700},[255,5813,5460],{"class":295},[255,5815,5463],{"class":269},[255,5817,5818,5821,5823],{"class":257,"line":1718},[255,5819,5820],{"class":269},"    }",[255,5822,5150],{"class":302},[255,5824,370],{"class":269},[255,5826,5827,5829,5831,5833,5835,5837,5839,5841,5843],{"class":257,"line":1735},[255,5828,4530],{"class":295},[255,5830,4533],{"class":269},[255,5832,5797],{"class":265},[255,5834,315],{"class":680},[255,5836,4496],{"class":295},[255,5838,3187],{"class":680},[255,5840,4522],{"class":295},[255,5842,4071],{"class":680},[255,5844,564],{"class":269},[255,5846,5847,5849],{"class":257,"line":1754},[255,5848,5490],{"class":295},[255,5850,5463],{"class":269},[255,5852,5853],{"class":257,"line":1773},[255,5854,420],{"class":269},[255,5856,5857],{"class":257,"line":1778},[255,5858,620],{"class":269},[255,5860,5861,5863,5865,5867,5870,5872,5874,5876,5878,5880,5882,5884,5886,5888,5890,5892,5894,5896,5898],{"class":257,"line":1965},[255,5862,337],{"class":302},[255,5864,5547],{"class":295},[255,5866,4533],{"class":269},[255,5868,5869],{"class":265},"concat",[255,5871,315],{"class":680},[255,5873,4480],{"class":295},[255,5875,4533],{"class":269},[255,5877,5651],{"class":265},[255,5879,315],{"class":680},[255,5881,4510],{"class":295},[255,5883,465],{"class":680},[255,5885,3172],{"class":269},[255,5887,4517],{"class":295},[255,5889,4533],{"class":269},[255,5891,5651],{"class":265},[255,5893,315],{"class":680},[255,5895,4522],{"class":295},[255,5897,5662],{"class":680},[255,5899,564],{"class":269},[255,5901,5902],{"class":257,"line":1982},[255,5903,434],{"class":269},[3144,5905,5907],{"id":5906},"on-平方冒泡排序","O(n²) 平方：冒泡排序",[183,5909,5910],{},"相邻两个数比大小，较大的往后换。外层走 n 轮，内层每一轮也跟着 n 走，所以是平方复杂度。n 扩大 10 倍，比较次数大约变成 100 倍。下面的实现会改原数组。",[242,5912,5913,6069,6221,6389,6590],{},[245,5914,5916],{"className":247,"code":5915,"filename":249,"language":250,"meta":251,"style":251},"def bubble_sort(nums):\n  n = len(nums)\n  for i in range(n):\n    for j in range(n - 1 - i):\n      if nums[j] > nums[j + 1]:\n        nums[j], nums[j + 1] = nums[j + 1], nums[j]\n  return nums\n",[218,5917,5918,5931,5947,5963,5989,6017,6063],{"__ignoreMap":251},[255,5919,5920,5922,5925,5927,5929],{"class":257,"line":258},[255,5921,262],{"class":261},[255,5923,5924],{"class":265}," bubble_sort",[255,5926,315],{"class":269},[255,5928,3169],{"class":273},[255,5930,276],{"class":269},[255,5932,5933,5936,5938,5940,5942,5944],{"class":257,"line":279},[255,5934,5935],{"class":295},"  n ",[255,5937,381],{"class":269},[255,5939,4359],{"class":265},[255,5941,315],{"class":269},[255,5943,3169],{"class":265},[255,5945,5946],{"class":269},")\n",[255,5948,5949,5951,5953,5955,5957,5959,5961],{"class":257,"line":292},[255,5950,303],{"class":302},[255,5952,883],{"class":295},[255,5954,309],{"class":302},[255,5956,312],{"class":265},[255,5958,315],{"class":269},[255,5960,220],{"class":265},[255,5962,276],{"class":269},[255,5964,5965,5967,5969,5971,5973,5975,5977,5980,5982,5985,5987],{"class":257,"line":299},[255,5966,394],{"class":302},[255,5968,1741],{"class":295},[255,5970,309],{"class":302},[255,5972,312],{"class":265},[255,5974,315],{"class":269},[255,5976,503],{"class":265},[255,5978,5979],{"class":269},"-",[255,5981,3424],{"class":288},[255,5983,5984],{"class":269}," -",[255,5986,1204],{"class":265},[255,5988,276],{"class":269},[255,5990,5991,5994,5996,5998,6000,6002,6004,6006,6008,6011,6013,6015],{"class":257,"line":322},[255,5992,5993],{"class":302},"      if",[255,5995,3184],{"class":295},[255,5997,3187],{"class":269},[255,5999,4522],{"class":295},[255,6001,3258],{"class":269},[255,6003,4295],{"class":269},[255,6005,3184],{"class":295},[255,6007,3187],{"class":269},[255,6009,6010],{"class":295},"j ",[255,6012,1786],{"class":269},[255,6014,3424],{"class":288},[255,6016,4525],{"class":269},[255,6018,6019,6022,6024,6026,6029,6031,6033,6035,6037,6039,6041,6043,6045,6047,6049,6051,6053,6055,6057,6059,6061],{"class":257,"line":334},[255,6020,6021],{"class":295},"        nums",[255,6023,3187],{"class":269},[255,6025,4522],{"class":295},[255,6027,6028],{"class":269},"],",[255,6030,3184],{"class":295},[255,6032,3187],{"class":269},[255,6034,6010],{"class":295},[255,6036,1786],{"class":269},[255,6038,3424],{"class":288},[255,6040,3258],{"class":269},[255,6042,285],{"class":269},[255,6044,3184],{"class":295},[255,6046,3187],{"class":269},[255,6048,6010],{"class":295},[255,6050,1786],{"class":269},[255,6052,3424],{"class":288},[255,6054,6028],{"class":269},[255,6056,3184],{"class":295},[255,6058,3187],{"class":269},[255,6060,4522],{"class":295},[255,6062,3193],{"class":269},[255,6064,6065,6067],{"class":257,"line":423},[255,6066,337],{"class":302},[255,6068,4379],{"class":295},[245,6070,6072],{"className":343,"code":6071,"filename":345,"language":346,"meta":251,"style":251},"fun bubble_sort(nums: IntArray): IntArray {\n    val n = nums.size\n    for (i in 0 until n) {\n        for (j in 0 until n - 1 - i) {\n            if (nums[j] > nums[j + 1]) {\n                val tmp = nums[j]\n                nums[j] = nums[j + 1]\n                nums[j + 1] = tmp\n            }\n        }\n    }\n    return nums\n}\n",[218,6073,6074,6090,6101,6113,6135,6155,6168,6183,6199,6203,6207,6211,6217],{"__ignoreMap":251},[255,6075,6076,6078,6080,6082,6084,6086,6088],{"class":257,"line":258},[255,6077,353],{"class":269},[255,6079,5924],{"class":265},[255,6081,3207],{"class":295},[255,6083,3210],{"class":361},[255,6085,365],{"class":295},[255,6087,3210],{"class":361},[255,6089,370],{"class":295},[255,6091,6092,6094,6096,6098],{"class":257,"line":279},[255,6093,4690],{"class":269},[255,6095,3611],{"class":295},[255,6097,381],{"class":269},[255,6099,6100],{"class":295}," nums.size\n",[255,6102,6103,6105,6107,6109,6111],{"class":257,"line":292},[255,6104,394],{"class":302},[255,6106,969],{"class":295},[255,6108,309],{"class":269},[255,6110,402],{"class":288},[255,6112,405],{"class":295},[255,6114,6115,6117,6119,6121,6123,6126,6128,6130,6132],{"class":257,"line":299},[255,6116,966],{"class":302},[255,6118,1956],{"class":295},[255,6120,309],{"class":269},[255,6122,402],{"class":288},[255,6124,6125],{"class":295}," until n ",[255,6127,5979],{"class":269},[255,6129,3424],{"class":288},[255,6131,5984],{"class":269},[255,6133,6134],{"class":295}," i) {\n",[255,6136,6137,6140,6143,6145,6148,6150,6152],{"class":257,"line":322},[255,6138,6139],{"class":302},"            if",[255,6141,6142],{"class":295}," (nums[j] ",[255,6144,3944],{"class":269},[255,6146,6147],{"class":295}," nums[j ",[255,6149,1786],{"class":269},[255,6151,3424],{"class":288},[255,6153,6154],{"class":295},"]) {\n",[255,6156,6157,6160,6163,6165],{"class":257,"line":334},[255,6158,6159],{"class":269},"                val",[255,6161,6162],{"class":295}," tmp ",[255,6164,381],{"class":269},[255,6166,6167],{"class":295}," nums[j]\n",[255,6169,6170,6173,6175,6177,6179,6181],{"class":257,"line":423},[255,6171,6172],{"class":295},"                nums[j] ",[255,6174,381],{"class":269},[255,6176,6147],{"class":295},[255,6178,1786],{"class":269},[255,6180,3424],{"class":288},[255,6182,3193],{"class":295},[255,6184,6185,6188,6190,6192,6194,6196],{"class":257,"line":431},[255,6186,6187],{"class":295},"                nums[j ",[255,6189,1786],{"class":269},[255,6191,3424],{"class":288},[255,6193,5775],{"class":295},[255,6195,381],{"class":269},[255,6197,6198],{"class":295}," tmp\n",[255,6200,6201],{"class":257,"line":1000},[255,6202,1985],{"class":295},[255,6204,6205],{"class":257,"line":1007},[255,6206,993],{"class":295},[255,6208,6209],{"class":257,"line":1690},[255,6210,420],{"class":295},[255,6212,6213,6215],{"class":257,"line":1700},[255,6214,426],{"class":302},[255,6216,4379],{"class":295},[255,6218,6219],{"class":257,"line":1718},[255,6220,434],{"class":295},[245,6222,6224],{"className":437,"code":6223,"filename":439,"language":440,"meta":251,"style":251},"func bubble_sort(_ nums: [Int]) -> [Int] {\n    var nums = nums\n    let n = nums.count\n    for i in 0..\u003Cn {\n        for j in 0..\u003C(n - 1 - i) {\n            if nums[j] > nums[j + 1] {\n                nums.swapAt(j, j + 1)\n            }\n        }\n    }\n    return nums\n}\n",[218,6225,6226,6256,6266,6277,6293,6320,6348,6367,6371,6375,6379,6385],{"__ignoreMap":251},[255,6227,6228,6230,6232,6234,6236,6238,6240,6242,6244,6246,6248,6250,6252,6254],{"class":257,"line":258},[255,6229,447],{"class":261},[255,6231,5924],{"class":265},[255,6233,315],{"class":269},[255,6235,454],{"class":265},[255,6237,3184],{"class":273},[255,6239,460],{"class":295},[255,6241,3187],{"class":269},[255,6243,362],{"class":361},[255,6245,4071],{"class":269},[255,6247,468],{"class":269},[255,6249,4940],{"class":269},[255,6251,362],{"class":361},[255,6253,3258],{"class":269},[255,6255,370],{"class":269},[255,6257,6258,6260,6262,6264],{"class":257,"line":279},[255,6259,375],{"class":288},[255,6261,4104],{"class":295},[255,6263,381],{"class":269},[255,6265,4379],{"class":295},[255,6267,6268,6270,6272,6274],{"class":257,"line":292},[255,6269,4972],{"class":288},[255,6271,3611],{"class":295},[255,6273,381],{"class":269},[255,6275,6276],{"class":295}," nums.count\n",[255,6278,6279,6281,6283,6285,6287,6289,6291],{"class":257,"line":299},[255,6280,394],{"class":302},[255,6282,883],{"class":295},[255,6284,309],{"class":302},[255,6286,402],{"class":288},[255,6288,500],{"class":269},[255,6290,503],{"class":295},[255,6292,506],{"class":269},[255,6294,6295,6297,6299,6301,6303,6306,6308,6310,6312,6314,6316,6318],{"class":257,"line":322},[255,6296,966],{"class":302},[255,6298,1741],{"class":295},[255,6300,309],{"class":302},[255,6302,402],{"class":288},[255,6304,6305],{"class":269},"..\u003C(",[255,6307,503],{"class":295},[255,6309,5979],{"class":269},[255,6311,3424],{"class":288},[255,6313,5984],{"class":269},[255,6315,1204],{"class":295},[255,6317,465],{"class":269},[255,6319,370],{"class":269},[255,6321,6322,6324,6326,6328,6330,6332,6334,6336,6338,6340,6342,6344,6346],{"class":257,"line":334},[255,6323,6139],{"class":302},[255,6325,3184],{"class":295},[255,6327,3187],{"class":269},[255,6329,4522],{"class":295},[255,6331,3258],{"class":269},[255,6333,4295],{"class":269},[255,6335,3184],{"class":295},[255,6337,3187],{"class":269},[255,6339,6010],{"class":295},[255,6341,1786],{"class":269},[255,6343,3424],{"class":288},[255,6345,3258],{"class":269},[255,6347,370],{"class":269},[255,6349,6350,6353,6356,6358,6361,6363,6365],{"class":257,"line":423},[255,6351,6352],{"class":295},"                nums.",[255,6354,6355],{"class":265},"swapAt",[255,6357,315],{"class":269},[255,6359,6360],{"class":295},"j, j ",[255,6362,1786],{"class":269},[255,6364,3424],{"class":288},[255,6366,5946],{"class":269},[255,6368,6369],{"class":257,"line":431},[255,6370,1985],{"class":269},[255,6372,6373],{"class":257,"line":1000},[255,6374,993],{"class":269},[255,6376,6377],{"class":257,"line":1007},[255,6378,420],{"class":269},[255,6380,6381,6383],{"class":257,"line":1690},[255,6382,426],{"class":302},[255,6384,4379],{"class":295},[255,6386,6387],{"class":257,"line":1700},[255,6388,434],{"class":269},[245,6390,6392],{"className":531,"code":6391,"filename":533,"language":534,"meta":251,"style":251},"List\u003Cint> bubble_sort(List\u003Cint> nums) {\n  final n = nums.length;\n  for (var i = 0; i \u003C n; i++) {\n    for (var j = 0; j \u003C n - 1 - i; j++) {\n      if (nums[j] > nums[j + 1]) {\n        final tmp = nums[j];\n        nums[j] = nums[j + 1];\n        nums[j + 1] = tmp;\n      }\n    }\n  }\n  return nums;\n}\n",[218,6393,6394,6417,6433,6463,6501,6517,6531,6548,6566,6570,6574,6578,6586],{"__ignoreMap":251},[255,6395,6396,6398,6400,6402,6404,6407,6409,6411,6413,6415],{"class":257,"line":258},[255,6397,3309],{"class":361},[255,6399,591],{"class":295},[255,6401,541],{"class":361},[255,6403,5253],{"class":295},[255,6405,6406],{"class":265},"bubble_sort",[255,6408,315],{"class":295},[255,6410,3309],{"class":361},[255,6412,591],{"class":295},[255,6414,541],{"class":361},[255,6416,4162],{"class":295},[255,6418,6419,6421,6423,6425,6427,6429,6431],{"class":257,"line":279},[255,6420,5295],{"class":261},[255,6422,3611],{"class":295},[255,6424,381],{"class":269},[255,6426,3184],{"class":295},[255,6428,4533],{"class":269},[255,6430,5585],{"class":295},[255,6432,564],{"class":269},[255,6434,6435,6437,6439,6441,6443,6445,6447,6449,6451,6453,6455,6457,6459,6461],{"class":257,"line":292},[255,6436,303],{"class":302},[255,6438,270],{"class":295},[255,6440,577],{"class":261},[255,6442,883],{"class":295},[255,6444,381],{"class":269},[255,6446,402],{"class":288},[255,6448,586],{"class":269},[255,6450,883],{"class":295},[255,6452,591],{"class":269},[255,6454,457],{"class":295},[255,6456,586],{"class":269},[255,6458,1204],{"class":295},[255,6460,601],{"class":269},[255,6462,604],{"class":295},[255,6464,6465,6467,6469,6471,6473,6475,6477,6479,6481,6483,6485,6487,6489,6491,6493,6495,6497,6499],{"class":257,"line":299},[255,6466,394],{"class":302},[255,6468,270],{"class":295},[255,6470,577],{"class":261},[255,6472,1741],{"class":295},[255,6474,381],{"class":269},[255,6476,402],{"class":288},[255,6478,586],{"class":269},[255,6480,1741],{"class":295},[255,6482,591],{"class":269},[255,6484,3611],{"class":295},[255,6486,5979],{"class":269},[255,6488,3424],{"class":288},[255,6490,5984],{"class":269},[255,6492,1204],{"class":295},[255,6494,586],{"class":269},[255,6496,2544],{"class":295},[255,6498,601],{"class":269},[255,6500,604],{"class":295},[255,6502,6503,6505,6507,6509,6511,6513,6515],{"class":257,"line":322},[255,6504,5993],{"class":302},[255,6506,6142],{"class":295},[255,6508,3944],{"class":269},[255,6510,6147],{"class":295},[255,6512,1786],{"class":269},[255,6514,3424],{"class":288},[255,6516,6154],{"class":295},[255,6518,6519,6522,6524,6526,6529],{"class":257,"line":334},[255,6520,6521],{"class":261},"        final",[255,6523,6162],{"class":295},[255,6525,381],{"class":269},[255,6527,6528],{"class":295}," nums[j]",[255,6530,564],{"class":269},[255,6532,6533,6536,6538,6540,6542,6544,6546],{"class":257,"line":423},[255,6534,6535],{"class":295},"        nums[j] ",[255,6537,381],{"class":269},[255,6539,6147],{"class":295},[255,6541,1786],{"class":269},[255,6543,3424],{"class":288},[255,6545,3258],{"class":295},[255,6547,564],{"class":269},[255,6549,6550,6553,6555,6557,6559,6561,6564],{"class":257,"line":431},[255,6551,6552],{"class":295},"        nums[j ",[255,6554,1786],{"class":269},[255,6556,3424],{"class":288},[255,6558,5775],{"class":295},[255,6560,381],{"class":269},[255,6562,6563],{"class":295}," tmp",[255,6565,564],{"class":269},[255,6567,6568],{"class":257,"line":1000},[255,6569,2572],{"class":295},[255,6571,6572],{"class":257,"line":1007},[255,6573,420],{"class":295},[255,6575,6576],{"class":257,"line":1690},[255,6577,620],{"class":295},[255,6579,6580,6582,6584],{"class":257,"line":1700},[255,6581,337],{"class":302},[255,6583,3184],{"class":295},[255,6585,564],{"class":269},[255,6587,6588],{"class":257,"line":1718},[255,6589,434],{"class":295},[245,6591,6593],{"className":636,"code":6592,"filename":638,"language":639,"meta":251,"style":251},"function bubble_sort(nums) {\n  const n = nums.length;\n  for (let i = 0; i \u003C n; i++) {\n    for (let j = 0; j \u003C n - 1 - i; j++) {\n      if (nums[j] > nums[j + 1]) {\n        const tmp = nums[j];\n        nums[j] = nums[j + 1];\n        nums[j + 1] = tmp;\n      }\n    }\n  }\n  return nums;\n}\n",[218,6594,6595,6609,6625,6657,6697,6727,6746,6772,6792,6796,6800,6804,6812],{"__ignoreMap":251},[255,6596,6597,6599,6601,6603,6605,6607],{"class":257,"line":258},[255,6598,646],{"class":261},[255,6600,5924],{"class":265},[255,6602,315],{"class":269},[255,6604,3169],{"class":273},[255,6606,465],{"class":269},[255,6608,370],{"class":269},[255,6610,6611,6613,6615,6617,6619,6621,6623],{"class":257,"line":279},[255,6612,5602],{"class":261},[255,6614,457],{"class":295},[255,6616,285],{"class":269},[255,6618,3184],{"class":295},[255,6620,4533],{"class":269},[255,6622,5585],{"class":295},[255,6624,564],{"class":269},[255,6626,6627,6629,6631,6633,6635,6637,6639,6641,6643,6645,6647,6649,6651,6653,6655],{"class":257,"line":292},[255,6628,303],{"class":302},[255,6630,270],{"class":680},[255,6632,683],{"class":261},[255,6634,1204],{"class":295},[255,6636,285],{"class":269},[255,6638,402],{"class":288},[255,6640,586],{"class":269},[255,6642,1204],{"class":295},[255,6644,696],{"class":269},[255,6646,457],{"class":295},[255,6648,586],{"class":269},[255,6650,1204],{"class":295},[255,6652,601],{"class":269},[255,6654,707],{"class":680},[255,6656,506],{"class":269},[255,6658,6659,6661,6663,6665,6667,6669,6671,6673,6675,6677,6679,6681,6683,6685,6687,6689,6691,6693,6695],{"class":257,"line":299},[255,6660,394],{"class":302},[255,6662,270],{"class":680},[255,6664,683],{"class":261},[255,6666,2544],{"class":295},[255,6668,285],{"class":269},[255,6670,402],{"class":288},[255,6672,586],{"class":269},[255,6674,2544],{"class":295},[255,6676,696],{"class":269},[255,6678,457],{"class":295},[255,6680,5984],{"class":269},[255,6682,3424],{"class":288},[255,6684,5984],{"class":269},[255,6686,1204],{"class":295},[255,6688,586],{"class":269},[255,6690,2544],{"class":295},[255,6692,601],{"class":269},[255,6694,707],{"class":680},[255,6696,506],{"class":269},[255,6698,6699,6701,6703,6705,6707,6709,6711,6713,6715,6717,6719,6721,6723,6725],{"class":257,"line":322},[255,6700,5993],{"class":302},[255,6702,270],{"class":680},[255,6704,3169],{"class":295},[255,6706,3187],{"class":680},[255,6708,4522],{"class":295},[255,6710,5775],{"class":680},[255,6712,3944],{"class":269},[255,6714,3184],{"class":295},[255,6716,3187],{"class":680},[255,6718,4522],{"class":295},[255,6720,2944],{"class":269},[255,6722,3424],{"class":288},[255,6724,5786],{"class":680},[255,6726,506],{"class":269},[255,6728,6729,6732,6734,6736,6738,6740,6742,6744],{"class":257,"line":334},[255,6730,6731],{"class":261},"        const",[255,6733,6563],{"class":295},[255,6735,285],{"class":269},[255,6737,3184],{"class":295},[255,6739,3187],{"class":680},[255,6741,4522],{"class":295},[255,6743,3258],{"class":680},[255,6745,564],{"class":269},[255,6747,6748,6750,6752,6754,6756,6758,6760,6762,6764,6766,6768,6770],{"class":257,"line":423},[255,6749,6021],{"class":295},[255,6751,3187],{"class":680},[255,6753,4522],{"class":295},[255,6755,5775],{"class":680},[255,6757,381],{"class":269},[255,6759,3184],{"class":295},[255,6761,3187],{"class":680},[255,6763,4522],{"class":295},[255,6765,2944],{"class":269},[255,6767,3424],{"class":288},[255,6769,3258],{"class":680},[255,6771,564],{"class":269},[255,6773,6774,6776,6778,6780,6782,6784,6786,6788,6790],{"class":257,"line":431},[255,6775,6021],{"class":295},[255,6777,3187],{"class":680},[255,6779,4522],{"class":295},[255,6781,2944],{"class":269},[255,6783,3424],{"class":288},[255,6785,5775],{"class":680},[255,6787,381],{"class":269},[255,6789,6563],{"class":295},[255,6791,564],{"class":269},[255,6793,6794],{"class":257,"line":1000},[255,6795,2572],{"class":269},[255,6797,6798],{"class":257,"line":1007},[255,6799,420],{"class":269},[255,6801,6802],{"class":257,"line":1690},[255,6803,620],{"class":269},[255,6805,6806,6808,6810],{"class":257,"line":1700},[255,6807,337],{"class":302},[255,6809,3184],{"class":295},[255,6811,564],{"class":269},[255,6813,6814],{"class":257,"line":1718},[255,6815,434],{"class":269},[3144,6817,6819],{"id":6818},"on-立方朴素矩阵乘法","O(n³) 立方：朴素矩阵乘法",[183,6821,6822],{},"两个 n×n 的矩阵相乘，结果里一共有 n² 个格子，每个格子都要做 n 次乘加。三层循环套在一起，就是 O(n³)。n 扩大 10 倍，工作量大约变成 1000 倍。",[242,6824,6825,6999,7162,7384,7628],{},[245,6826,6828],{"className":247,"code":6827,"filename":249,"language":250,"meta":251,"style":251},"def multiply(a, b):\n  n = len(a)\n  c = [[0] * n for _ in range(n)]\n  for i in range(n):\n    for j in range(n):\n      for k in range(n):\n        c[i][j] += a[i][k] * b[k][j]\n  return c\n",[218,6829,6830,6849,6863,6898,6914,6930,6947,6992],{"__ignoreMap":251},[255,6831,6832,6834,6837,6839,6842,6844,6847],{"class":257,"line":258},[255,6833,262],{"class":261},[255,6835,6836],{"class":265}," multiply",[255,6838,315],{"class":269},[255,6840,6841],{"class":273},"a",[255,6843,3172],{"class":269},[255,6845,6846],{"class":273}," b",[255,6848,276],{"class":269},[255,6850,6851,6853,6855,6857,6859,6861],{"class":257,"line":279},[255,6852,5935],{"class":295},[255,6854,381],{"class":269},[255,6856,4359],{"class":265},[255,6858,315],{"class":269},[255,6860,6841],{"class":265},[255,6862,5946],{"class":269},[255,6864,6865,6868,6870,6873,6875,6877,6879,6881,6884,6887,6889,6891,6893,6895],{"class":257,"line":292},[255,6866,6867],{"class":295},"  c ",[255,6869,381],{"class":269},[255,6871,6872],{"class":269}," [[",[255,6874,3918],{"class":288},[255,6876,3258],{"class":269},[255,6878,1353],{"class":269},[255,6880,3611],{"class":295},[255,6882,6883],{"class":302},"for",[255,6885,6886],{"class":295}," _ ",[255,6888,309],{"class":302},[255,6890,312],{"class":265},[255,6892,315],{"class":269},[255,6894,220],{"class":265},[255,6896,6897],{"class":269},")]\n",[255,6899,6900,6902,6904,6906,6908,6910,6912],{"class":257,"line":299},[255,6901,303],{"class":302},[255,6903,883],{"class":295},[255,6905,309],{"class":302},[255,6907,312],{"class":265},[255,6909,315],{"class":269},[255,6911,220],{"class":265},[255,6913,276],{"class":269},[255,6915,6916,6918,6920,6922,6924,6926,6928],{"class":257,"line":322},[255,6917,394],{"class":302},[255,6919,1741],{"class":295},[255,6921,309],{"class":302},[255,6923,312],{"class":265},[255,6925,315],{"class":269},[255,6927,220],{"class":265},[255,6929,276],{"class":269},[255,6931,6932,6934,6937,6939,6941,6943,6945],{"class":257,"line":334},[255,6933,2521],{"class":302},[255,6935,6936],{"class":295}," k ",[255,6938,309],{"class":302},[255,6940,312],{"class":265},[255,6942,315],{"class":269},[255,6944,220],{"class":265},[255,6946,276],{"class":269},[255,6948,6949,6952,6954,6956,6959,6961,6963,6965,6968,6970,6972,6974,6976,6978,6980,6982,6984,6986,6988,6990],{"class":257,"line":423},[255,6950,6951],{"class":295},"        c",[255,6953,3187],{"class":269},[255,6955,4510],{"class":295},[255,6957,6958],{"class":269},"][",[255,6960,4522],{"class":295},[255,6962,3258],{"class":269},[255,6964,328],{"class":269},[255,6966,6967],{"class":295}," a",[255,6969,3187],{"class":269},[255,6971,4510],{"class":295},[255,6973,6958],{"class":269},[255,6975,3190],{"class":295},[255,6977,3258],{"class":269},[255,6979,1353],{"class":269},[255,6981,6846],{"class":295},[255,6983,3187],{"class":269},[255,6985,3190],{"class":295},[255,6987,6958],{"class":269},[255,6989,4522],{"class":295},[255,6991,3193],{"class":269},[255,6993,6994,6996],{"class":257,"line":431},[255,6995,337],{"class":302},[255,6997,6998],{"class":295}," c\n",[245,7000,7002],{"className":343,"code":7001,"filename":345,"language":346,"meta":251,"style":251},"fun multiply(a: List\u003CList\u003CInt>>, b: List\u003CList\u003CInt>>): List\u003CList\u003CInt>> {\n    val n = a.size\n    val c = MutableList(n) { MutableList(n) { 0 } }\n    for (i in 0 until n) {\n        for (j in 0 until n) {\n            for (k in 0 until n) {\n                c[i][j] += a[i][k] * b[k][j]\n            }\n        }\n    }\n    return c\n}\n",[218,7003,7004,7052,7063,7088,7100,7112,7125,7140,7144,7148,7152,7158],{"__ignoreMap":251},[255,7005,7006,7008,7010,7013,7015,7017,7019,7021,7023,7026,7028,7030,7032,7034,7036,7039,7041,7043,7045,7047,7049],{"class":257,"line":258},[255,7007,353],{"class":269},[255,7009,6836],{"class":265},[255,7011,7012],{"class":295},"(a: ",[255,7014,3309],{"class":361},[255,7016,591],{"class":295},[255,7018,3309],{"class":361},[255,7020,591],{"class":295},[255,7022,362],{"class":361},[255,7024,7025],{"class":295},">>, b: ",[255,7027,3309],{"class":361},[255,7029,591],{"class":295},[255,7031,3309],{"class":361},[255,7033,591],{"class":295},[255,7035,362],{"class":361},[255,7037,7038],{"class":295},">>): ",[255,7040,3309],{"class":361},[255,7042,591],{"class":295},[255,7044,3309],{"class":361},[255,7046,591],{"class":295},[255,7048,362],{"class":361},[255,7050,7051],{"class":295},">> {\n",[255,7053,7054,7056,7058,7060],{"class":257,"line":279},[255,7055,4690],{"class":269},[255,7057,3611],{"class":295},[255,7059,381],{"class":269},[255,7061,7062],{"class":295}," a.size\n",[255,7064,7065,7067,7070,7072,7075,7078,7081,7083,7085],{"class":257,"line":292},[255,7066,4690],{"class":269},[255,7068,7069],{"class":295}," c ",[255,7071,381],{"class":269},[255,7073,7074],{"class":265}," MutableList",[255,7076,7077],{"class":295},"(n) { ",[255,7079,7080],{"class":265},"MutableList",[255,7082,7077],{"class":295},[255,7084,3918],{"class":288},[255,7086,7087],{"class":295}," } }\n",[255,7089,7090,7092,7094,7096,7098],{"class":257,"line":299},[255,7091,394],{"class":302},[255,7093,969],{"class":295},[255,7095,309],{"class":269},[255,7097,402],{"class":288},[255,7099,405],{"class":295},[255,7101,7102,7104,7106,7108,7110],{"class":257,"line":322},[255,7103,966],{"class":302},[255,7105,1956],{"class":295},[255,7107,309],{"class":269},[255,7109,402],{"class":288},[255,7111,405],{"class":295},[255,7113,7114,7116,7119,7121,7123],{"class":257,"line":334},[255,7115,1738],{"class":302},[255,7117,7118],{"class":295}," (k ",[255,7120,309],{"class":269},[255,7122,402],{"class":288},[255,7124,405],{"class":295},[255,7126,7127,7130,7132,7135,7137],{"class":257,"line":423},[255,7128,7129],{"class":295},"                c[i][j] ",[255,7131,413],{"class":269},[255,7133,7134],{"class":295}," a[i][k] ",[255,7136,905],{"class":269},[255,7138,7139],{"class":295}," b[k][j]\n",[255,7141,7142],{"class":257,"line":431},[255,7143,1985],{"class":295},[255,7145,7146],{"class":257,"line":1000},[255,7147,993],{"class":295},[255,7149,7150],{"class":257,"line":1007},[255,7151,420],{"class":295},[255,7153,7154,7156],{"class":257,"line":1690},[255,7155,426],{"class":302},[255,7157,6998],{"class":295},[255,7159,7160],{"class":257,"line":1700},[255,7161,434],{"class":295},[245,7163,7165],{"className":437,"code":7164,"filename":439,"language":440,"meta":251,"style":251},"func multiply(_ a: [[Int]], _ b: [[Int]]) -> [[Int]] {\n    let n = a.count\n    var c = Array(repeating: Array(repeating: 0, count: n), count: n)\n    for i in 0..\u003Cn {\n        for j in 0..\u003Cn {\n            for k in 0..\u003Cn {\n                c[i][j] += a[i][k] * b[k][j]\n            }\n        }\n    }\n    return c\n}\n",[218,7166,7167,7214,7225,7274,7290,7306,7322,7362,7366,7370,7374,7380],{"__ignoreMap":251},[255,7168,7169,7171,7173,7175,7177,7179,7181,7184,7186,7189,7191,7193,7195,7197,7199,7201,7204,7206,7208,7210,7212],{"class":257,"line":258},[255,7170,447],{"class":261},[255,7172,6836],{"class":265},[255,7174,315],{"class":269},[255,7176,454],{"class":265},[255,7178,6967],{"class":273},[255,7180,460],{"class":295},[255,7182,7183],{"class":269},"[[",[255,7185,362],{"class":361},[255,7187,7188],{"class":269},"]]",[255,7190,3261],{"class":295},[255,7192,454],{"class":265},[255,7194,6846],{"class":273},[255,7196,460],{"class":295},[255,7198,7183],{"class":269},[255,7200,362],{"class":361},[255,7202,7203],{"class":269},"]])",[255,7205,468],{"class":269},[255,7207,6872],{"class":269},[255,7209,362],{"class":361},[255,7211,7188],{"class":269},[255,7213,370],{"class":269},[255,7215,7216,7218,7220,7222],{"class":257,"line":279},[255,7217,4972],{"class":288},[255,7219,3611],{"class":295},[255,7221,381],{"class":269},[255,7223,7224],{"class":295}," a.count\n",[255,7226,7227,7229,7231,7233,7236,7238,7241,7243,7245,7247,7249,7251,7253,7255,7258,7260,7262,7264,7266,7268,7270,7272],{"class":257,"line":292},[255,7228,375],{"class":288},[255,7230,7069],{"class":295},[255,7232,381],{"class":269},[255,7234,7235],{"class":361}," Array",[255,7237,315],{"class":269},[255,7239,7240],{"class":265},"repeating",[255,7242,3446],{"class":269},[255,7244,7235],{"class":361},[255,7246,315],{"class":269},[255,7248,7240],{"class":265},[255,7250,3446],{"class":269},[255,7252,402],{"class":288},[255,7254,3261],{"class":295},[255,7256,7257],{"class":265},"count",[255,7259,3446],{"class":269},[255,7261,457],{"class":295},[255,7263,465],{"class":269},[255,7265,3261],{"class":295},[255,7267,7257],{"class":265},[255,7269,3446],{"class":269},[255,7271,457],{"class":295},[255,7273,5946],{"class":269},[255,7275,7276,7278,7280,7282,7284,7286,7288],{"class":257,"line":299},[255,7277,394],{"class":302},[255,7279,883],{"class":295},[255,7281,309],{"class":302},[255,7283,402],{"class":288},[255,7285,500],{"class":269},[255,7287,503],{"class":295},[255,7289,506],{"class":269},[255,7291,7292,7294,7296,7298,7300,7302,7304],{"class":257,"line":322},[255,7293,966],{"class":302},[255,7295,1741],{"class":295},[255,7297,309],{"class":302},[255,7299,402],{"class":288},[255,7301,500],{"class":269},[255,7303,503],{"class":295},[255,7305,506],{"class":269},[255,7307,7308,7310,7312,7314,7316,7318,7320],{"class":257,"line":334},[255,7309,1738],{"class":302},[255,7311,6936],{"class":295},[255,7313,309],{"class":302},[255,7315,402],{"class":288},[255,7317,500],{"class":269},[255,7319,503],{"class":295},[255,7321,506],{"class":269},[255,7323,7324,7327,7329,7331,7333,7336,7338,7340,7342,7344,7346,7349,7351,7353,7355,7357,7359],{"class":257,"line":423},[255,7325,7326],{"class":295},"                c",[255,7328,3187],{"class":269},[255,7330,4510],{"class":295},[255,7332,3258],{"class":269},[255,7334,7335],{"class":295},"[j] ",[255,7337,413],{"class":269},[255,7339,6967],{"class":295},[255,7341,3187],{"class":269},[255,7343,4510],{"class":295},[255,7345,3258],{"class":269},[255,7347,7348],{"class":295},"[k] ",[255,7350,905],{"class":269},[255,7352,6846],{"class":295},[255,7354,3187],{"class":269},[255,7356,3190],{"class":295},[255,7358,3258],{"class":269},[255,7360,7361],{"class":295},"[j]\n",[255,7363,7364],{"class":257,"line":431},[255,7365,1985],{"class":269},[255,7367,7368],{"class":257,"line":1000},[255,7369,993],{"class":269},[255,7371,7372],{"class":257,"line":1007},[255,7373,420],{"class":269},[255,7375,7376,7378],{"class":257,"line":1690},[255,7377,426],{"class":302},[255,7379,6998],{"class":295},[255,7381,7382],{"class":257,"line":1700},[255,7383,434],{"class":269},[245,7385,7387],{"className":531,"code":7386,"filename":533,"language":534,"meta":251,"style":251},"List\u003CList\u003Cint>> multiply(List\u003CList\u003Cint>> a, List\u003CList\u003Cint>> b) {\n  final n = a.length;\n  final c = List.generate(n, (_) => List.filled(n, 0));\n  for (var i = 0; i \u003C n; i++) {\n    for (var j = 0; j \u003C n; j++) {\n      for (var k = 0; k \u003C n; k++) {\n        c[i][j] += a[i][k] * b[k][j];\n      }\n    }\n  }\n  return c;\n}\n",[218,7388,7389,7438,7454,7497,7527,7557,7587,7603,7607,7611,7615,7624],{"__ignoreMap":251},[255,7390,7391,7393,7395,7397,7399,7401,7404,7407,7409,7411,7413,7415,7417,7419,7422,7424,7427,7429,7431,7433,7435],{"class":257,"line":258},[255,7392,3309],{"class":361},[255,7394,591],{"class":295},[255,7396,3309],{"class":361},[255,7398,591],{"class":295},[255,7400,541],{"class":361},[255,7402,7403],{"class":295},">> ",[255,7405,7406],{"class":265},"multiply",[255,7408,315],{"class":295},[255,7410,3309],{"class":361},[255,7412,591],{"class":295},[255,7414,3309],{"class":361},[255,7416,591],{"class":295},[255,7418,541],{"class":361},[255,7420,7421],{"class":295},">> a",[255,7423,3172],{"class":269},[255,7425,7426],{"class":361}," List",[255,7428,591],{"class":295},[255,7430,3309],{"class":361},[255,7432,591],{"class":295},[255,7434,541],{"class":361},[255,7436,7437],{"class":295},">> b) {\n",[255,7439,7440,7442,7444,7446,7448,7450,7452],{"class":257,"line":279},[255,7441,5295],{"class":261},[255,7443,3611],{"class":295},[255,7445,381],{"class":269},[255,7447,6967],{"class":295},[255,7449,4533],{"class":269},[255,7451,5585],{"class":295},[255,7453,564],{"class":269},[255,7455,7456,7458,7460,7462,7464,7466,7469,7472,7474,7477,7480,7482,7484,7487,7489,7491,7493,7495],{"class":257,"line":292},[255,7457,5295],{"class":261},[255,7459,7069],{"class":295},[255,7461,381],{"class":269},[255,7463,7426],{"class":361},[255,7465,4533],{"class":269},[255,7467,7468],{"class":265},"generate",[255,7470,7471],{"class":295},"(n",[255,7473,3172],{"class":269},[255,7475,7476],{"class":295}," (_) ",[255,7478,7479],{"class":269},"=>",[255,7481,7426],{"class":361},[255,7483,4533],{"class":269},[255,7485,7486],{"class":265},"filled",[255,7488,7471],{"class":295},[255,7490,3172],{"class":269},[255,7492,402],{"class":288},[255,7494,5662],{"class":295},[255,7496,564],{"class":269},[255,7498,7499,7501,7503,7505,7507,7509,7511,7513,7515,7517,7519,7521,7523,7525],{"class":257,"line":299},[255,7500,303],{"class":302},[255,7502,270],{"class":295},[255,7504,577],{"class":261},[255,7506,883],{"class":295},[255,7508,381],{"class":269},[255,7510,402],{"class":288},[255,7512,586],{"class":269},[255,7514,883],{"class":295},[255,7516,591],{"class":269},[255,7518,457],{"class":295},[255,7520,586],{"class":269},[255,7522,1204],{"class":295},[255,7524,601],{"class":269},[255,7526,604],{"class":295},[255,7528,7529,7531,7533,7535,7537,7539,7541,7543,7545,7547,7549,7551,7553,7555],{"class":257,"line":322},[255,7530,394],{"class":302},[255,7532,270],{"class":295},[255,7534,577],{"class":261},[255,7536,1741],{"class":295},[255,7538,381],{"class":269},[255,7540,402],{"class":288},[255,7542,586],{"class":269},[255,7544,1741],{"class":295},[255,7546,591],{"class":269},[255,7548,457],{"class":295},[255,7550,586],{"class":269},[255,7552,2544],{"class":295},[255,7554,601],{"class":269},[255,7556,604],{"class":295},[255,7558,7559,7561,7563,7565,7567,7569,7571,7573,7575,7577,7579,7581,7583,7585],{"class":257,"line":334},[255,7560,2521],{"class":302},[255,7562,270],{"class":295},[255,7564,577],{"class":261},[255,7566,6936],{"class":295},[255,7568,381],{"class":269},[255,7570,402],{"class":288},[255,7572,586],{"class":269},[255,7574,6936],{"class":295},[255,7576,591],{"class":269},[255,7578,457],{"class":295},[255,7580,586],{"class":269},[255,7582,3175],{"class":295},[255,7584,601],{"class":269},[255,7586,604],{"class":295},[255,7588,7589,7592,7594,7596,7598,7601],{"class":257,"line":423},[255,7590,7591],{"class":295},"        c[i][j] ",[255,7593,413],{"class":269},[255,7595,7134],{"class":295},[255,7597,905],{"class":269},[255,7599,7600],{"class":295}," b[k][j]",[255,7602,564],{"class":269},[255,7604,7605],{"class":257,"line":431},[255,7606,2572],{"class":295},[255,7608,7609],{"class":257,"line":1000},[255,7610,420],{"class":295},[255,7612,7613],{"class":257,"line":1007},[255,7614,620],{"class":295},[255,7616,7617,7619,7622],{"class":257,"line":1690},[255,7618,337],{"class":302},[255,7620,7621],{"class":295}," c",[255,7623,564],{"class":269},[255,7625,7626],{"class":257,"line":1700},[255,7627,434],{"class":295},[245,7629,7631],{"className":636,"code":7630,"filename":638,"language":639,"meta":251,"style":251},"function multiply(a, b) {\n  const n = a.length;\n  const c = Array.from({ length: n }, () => Array(n).fill(0));\n  for (let i = 0; i \u003C n; i++) {\n    for (let j = 0; j \u003C n; j++) {\n      for (let k = 0; k \u003C n; k++) {\n        c[i][j] += a[i][k] * b[k][j];\n      }\n    }\n  }\n  return c;\n}\n",[218,7632,7633,7651,7667,7723,7755,7787,7819,7863,7867,7871,7875,7883],{"__ignoreMap":251},[255,7634,7635,7637,7639,7641,7643,7645,7647,7649],{"class":257,"line":258},[255,7636,646],{"class":261},[255,7638,6836],{"class":265},[255,7640,315],{"class":269},[255,7642,6841],{"class":273},[255,7644,3172],{"class":269},[255,7646,6846],{"class":273},[255,7648,465],{"class":269},[255,7650,370],{"class":269},[255,7652,7653,7655,7657,7659,7661,7663,7665],{"class":257,"line":279},[255,7654,5602],{"class":261},[255,7656,457],{"class":295},[255,7658,285],{"class":269},[255,7660,6967],{"class":295},[255,7662,4533],{"class":269},[255,7664,5585],{"class":295},[255,7666,564],{"class":269},[255,7668,7669,7671,7673,7675,7677,7679,7682,7684,7686,7689,7691,7693,7696,7699,7702,7704,7706,7708,7710,7712,7715,7717,7719,7721],{"class":257,"line":292},[255,7670,5602],{"class":261},[255,7672,7621],{"class":295},[255,7674,285],{"class":269},[255,7676,7235],{"class":295},[255,7678,4533],{"class":269},[255,7680,7681],{"class":265},"from",[255,7683,315],{"class":680},[255,7685,3614],{"class":269},[255,7687,7688],{"class":680}," length",[255,7690,3446],{"class":269},[255,7692,457],{"class":295},[255,7694,7695],{"class":269}," },",[255,7697,7698],{"class":269}," ()",[255,7700,7701],{"class":261}," =>",[255,7703,7235],{"class":265},[255,7705,315],{"class":680},[255,7707,220],{"class":295},[255,7709,465],{"class":680},[255,7711,4533],{"class":269},[255,7713,7714],{"class":265},"fill",[255,7716,315],{"class":680},[255,7718,3918],{"class":288},[255,7720,5662],{"class":680},[255,7722,564],{"class":269},[255,7724,7725,7727,7729,7731,7733,7735,7737,7739,7741,7743,7745,7747,7749,7751,7753],{"class":257,"line":299},[255,7726,303],{"class":302},[255,7728,270],{"class":680},[255,7730,683],{"class":261},[255,7732,1204],{"class":295},[255,7734,285],{"class":269},[255,7736,402],{"class":288},[255,7738,586],{"class":269},[255,7740,1204],{"class":295},[255,7742,696],{"class":269},[255,7744,457],{"class":295},[255,7746,586],{"class":269},[255,7748,1204],{"class":295},[255,7750,601],{"class":269},[255,7752,707],{"class":680},[255,7754,506],{"class":269},[255,7756,7757,7759,7761,7763,7765,7767,7769,7771,7773,7775,7777,7779,7781,7783,7785],{"class":257,"line":322},[255,7758,394],{"class":302},[255,7760,270],{"class":680},[255,7762,683],{"class":261},[255,7764,2544],{"class":295},[255,7766,285],{"class":269},[255,7768,402],{"class":288},[255,7770,586],{"class":269},[255,7772,2544],{"class":295},[255,7774,696],{"class":269},[255,7776,457],{"class":295},[255,7778,586],{"class":269},[255,7780,2544],{"class":295},[255,7782,601],{"class":269},[255,7784,707],{"class":680},[255,7786,506],{"class":269},[255,7788,7789,7791,7793,7795,7797,7799,7801,7803,7805,7807,7809,7811,7813,7815,7817],{"class":257,"line":334},[255,7790,2521],{"class":302},[255,7792,270],{"class":680},[255,7794,683],{"class":261},[255,7796,3175],{"class":295},[255,7798,285],{"class":269},[255,7800,402],{"class":288},[255,7802,586],{"class":269},[255,7804,3175],{"class":295},[255,7806,696],{"class":269},[255,7808,457],{"class":295},[255,7810,586],{"class":269},[255,7812,3175],{"class":295},[255,7814,601],{"class":269},[255,7816,707],{"class":680},[255,7818,506],{"class":269},[255,7820,7821,7823,7825,7827,7829,7831,7833,7835,7837,7839,7841,7843,7845,7847,7849,7851,7853,7855,7857,7859,7861],{"class":257,"line":423},[255,7822,6951],{"class":295},[255,7824,3187],{"class":680},[255,7826,4510],{"class":295},[255,7828,6958],{"class":680},[255,7830,4522],{"class":295},[255,7832,5775],{"class":680},[255,7834,413],{"class":269},[255,7836,6967],{"class":295},[255,7838,3187],{"class":680},[255,7840,4510],{"class":295},[255,7842,6958],{"class":680},[255,7844,3190],{"class":295},[255,7846,5775],{"class":680},[255,7848,905],{"class":269},[255,7850,6846],{"class":295},[255,7852,3187],{"class":680},[255,7854,3190],{"class":295},[255,7856,6958],{"class":680},[255,7858,4522],{"class":295},[255,7860,3258],{"class":680},[255,7862,564],{"class":269},[255,7864,7865],{"class":257,"line":431},[255,7866,2572],{"class":269},[255,7868,7869],{"class":257,"line":1000},[255,7870,420],{"class":269},[255,7872,7873],{"class":257,"line":1007},[255,7874,620],{"class":269},[255,7876,7877,7879,7881],{"class":257,"line":1690},[255,7878,337],{"class":302},[255,7880,7621],{"class":295},[255,7882,564],{"class":269},[255,7884,7885],{"class":257,"line":1700},[255,7886,434],{"class":269},[3144,7888,7890],{"id":7889},"o2ⁿ-指数朴素递归斐波那契","O(2ⁿ) 指数：朴素递归斐波那契",[183,7892,7893,7896,7897,819,7900,7903],{},[218,7894,7895],{},"fib(n)"," 要先算出 ",[218,7898,7899],{},"fib(n - 1)",[218,7901,7902],{},"fib(n - 2)","，同一次调用会拆成两支。n 每增加 1，调用次数大约翻倍，所以是指数复杂度。教材里常写成 O(2ⁿ)。n 稍微大一点就慢到不能用，它只适合拿来看增长趋势。",[242,7905,7906,7973,8042,8123,8190],{},[245,7907,7909],{"className":247,"code":7908,"filename":249,"language":250,"meta":251,"style":251},"def fib(n):\n  if n \u003C= 1:\n    return n\n  return fib(n - 1) + fib(n - 2)\n",[218,7910,7911,7924,7936,7943],{"__ignoreMap":251},[255,7912,7913,7915,7918,7920,7922],{"class":257,"line":258},[255,7914,262],{"class":261},[255,7916,7917],{"class":265}," fib",[255,7919,315],{"class":269},[255,7921,220],{"class":273},[255,7923,276],{"class":269},[255,7925,7926,7928,7930,7932,7934],{"class":257,"line":279},[255,7927,4356],{"class":302},[255,7929,3611],{"class":295},[255,7931,4676],{"class":269},[255,7933,3424],{"class":288},[255,7935,3934],{"class":269},[255,7937,7938,7940],{"class":257,"line":292},[255,7939,426],{"class":302},[255,7941,7942],{"class":295}," n\n",[255,7944,7945,7947,7949,7951,7953,7955,7957,7959,7961,7963,7965,7967,7969,7971],{"class":257,"line":299},[255,7946,337],{"class":302},[255,7948,7917],{"class":265},[255,7950,315],{"class":269},[255,7952,503],{"class":265},[255,7954,5979],{"class":269},[255,7956,3424],{"class":288},[255,7958,465],{"class":269},[255,7960,2944],{"class":269},[255,7962,7917],{"class":265},[255,7964,315],{"class":269},[255,7966,503],{"class":265},[255,7968,5979],{"class":269},[255,7970,3463],{"class":288},[255,7972,5946],{"class":269},[245,7974,7976],{"className":343,"code":7975,"filename":345,"language":346,"meta":251,"style":251},"fun fib(n: Int): Int {\n    if (n \u003C= 1) return n\n    return fib(n - 1) + fib(n - 2)\n}\n",[218,7977,7978,7994,8011,8038],{"__ignoreMap":251},[255,7979,7980,7982,7984,7986,7988,7990,7992],{"class":257,"line":258},[255,7981,353],{"class":269},[255,7983,7917],{"class":265},[255,7985,358],{"class":295},[255,7987,362],{"class":361},[255,7989,365],{"class":295},[255,7991,362],{"class":361},[255,7993,370],{"class":295},[255,7995,7996,7998,8001,8003,8005,8007,8009],{"class":257,"line":279},[255,7997,3939],{"class":302},[255,7999,8000],{"class":295}," (n ",[255,8002,4676],{"class":269},[255,8004,3424],{"class":288},[255,8006,707],{"class":295},[255,8008,4683],{"class":302},[255,8010,7942],{"class":295},[255,8012,8013,8015,8017,8020,8022,8024,8026,8028,8030,8032,8034,8036],{"class":257,"line":292},[255,8014,426],{"class":302},[255,8016,7917],{"class":265},[255,8018,8019],{"class":295},"(n ",[255,8021,5979],{"class":269},[255,8023,3424],{"class":288},[255,8025,707],{"class":295},[255,8027,1786],{"class":269},[255,8029,7917],{"class":265},[255,8031,8019],{"class":295},[255,8033,5979],{"class":269},[255,8035,3463],{"class":288},[255,8037,5946],{"class":295},[255,8039,8040],{"class":257,"line":299},[255,8041,434],{"class":295},[245,8043,8045],{"className":437,"code":8044,"filename":439,"language":440,"meta":251,"style":251},"func fib(_ n: Int) -> Int {\n    if n \u003C= 1 { return n }\n    return fib(n - 1) + fib(n - 2)\n}\n",[218,8046,8047,8071,8089,8119],{"__ignoreMap":251},[255,8048,8049,8051,8053,8055,8057,8059,8061,8063,8065,8067,8069],{"class":257,"line":258},[255,8050,447],{"class":261},[255,8052,7917],{"class":265},[255,8054,315],{"class":269},[255,8056,454],{"class":265},[255,8058,457],{"class":273},[255,8060,460],{"class":295},[255,8062,362],{"class":361},[255,8064,465],{"class":269},[255,8066,468],{"class":269},[255,8068,471],{"class":361},[255,8070,370],{"class":269},[255,8072,8073,8075,8077,8079,8081,8083,8085,8087],{"class":257,"line":279},[255,8074,3939],{"class":302},[255,8076,3611],{"class":295},[255,8078,4676],{"class":269},[255,8080,3424],{"class":288},[255,8082,4960],{"class":269},[255,8084,4963],{"class":302},[255,8086,3611],{"class":295},[255,8088,434],{"class":269},[255,8090,8091,8093,8095,8097,8099,8101,8103,8105,8107,8109,8111,8113,8115,8117],{"class":257,"line":292},[255,8092,426],{"class":302},[255,8094,7917],{"class":265},[255,8096,315],{"class":269},[255,8098,503],{"class":295},[255,8100,5979],{"class":269},[255,8102,3424],{"class":288},[255,8104,465],{"class":269},[255,8106,2944],{"class":269},[255,8108,7917],{"class":265},[255,8110,315],{"class":269},[255,8112,503],{"class":295},[255,8114,5979],{"class":269},[255,8116,3463],{"class":288},[255,8118,5946],{"class":269},[255,8120,8121],{"class":257,"line":299},[255,8122,434],{"class":269},[245,8124,8126],{"className":531,"code":8125,"filename":533,"language":534,"meta":251,"style":251},"int fib(int n) {\n  if (n \u003C= 1) return n;\n  return fib(n - 1) + fib(n - 2);\n}\n",[218,8127,8128,8140,8158,8186],{"__ignoreMap":251},[255,8129,8130,8132,8134,8136,8138],{"class":257,"line":258},[255,8131,541],{"class":361},[255,8133,7917],{"class":265},[255,8135,315],{"class":295},[255,8137,541],{"class":361},[255,8139,550],{"class":295},[255,8141,8142,8144,8146,8148,8150,8152,8154,8156],{"class":257,"line":279},[255,8143,4356],{"class":302},[255,8145,8000],{"class":295},[255,8147,4676],{"class":269},[255,8149,3424],{"class":288},[255,8151,707],{"class":295},[255,8153,4683],{"class":302},[255,8155,457],{"class":295},[255,8157,564],{"class":269},[255,8159,8160,8162,8164,8166,8168,8170,8172,8174,8176,8178,8180,8182,8184],{"class":257,"line":292},[255,8161,337],{"class":302},[255,8163,7917],{"class":265},[255,8165,8019],{"class":295},[255,8167,5979],{"class":269},[255,8169,3424],{"class":288},[255,8171,707],{"class":295},[255,8173,1786],{"class":269},[255,8175,7917],{"class":265},[255,8177,8019],{"class":295},[255,8179,5979],{"class":269},[255,8181,3463],{"class":288},[255,8183,465],{"class":295},[255,8185,564],{"class":269},[255,8187,8188],{"class":257,"line":299},[255,8189,434],{"class":295},[245,8191,8193],{"className":636,"code":8192,"filename":638,"language":639,"meta":251,"style":251},"function fib(n) {\n  if (n \u003C= 1) return n;\n  return fib(n - 1) + fib(n - 2);\n}\n",[218,8194,8195,8209,8229,8261],{"__ignoreMap":251},[255,8196,8197,8199,8201,8203,8205,8207],{"class":257,"line":258},[255,8198,646],{"class":261},[255,8200,7917],{"class":265},[255,8202,315],{"class":269},[255,8204,220],{"class":273},[255,8206,465],{"class":269},[255,8208,370],{"class":269},[255,8210,8211,8213,8215,8217,8219,8221,8223,8225,8227],{"class":257,"line":279},[255,8212,4356],{"class":302},[255,8214,270],{"class":680},[255,8216,220],{"class":295},[255,8218,4368],{"class":269},[255,8220,3424],{"class":288},[255,8222,707],{"class":680},[255,8224,4683],{"class":302},[255,8226,457],{"class":295},[255,8228,564],{"class":269},[255,8230,8231,8233,8235,8237,8239,8241,8243,8245,8247,8249,8251,8253,8255,8257,8259],{"class":257,"line":292},[255,8232,337],{"class":302},[255,8234,7917],{"class":265},[255,8236,315],{"class":680},[255,8238,220],{"class":295},[255,8240,5984],{"class":269},[255,8242,3424],{"class":288},[255,8244,707],{"class":680},[255,8246,1786],{"class":269},[255,8248,7917],{"class":265},[255,8250,315],{"class":680},[255,8252,220],{"class":295},[255,8254,5984],{"class":269},[255,8256,3463],{"class":288},[255,8258,465],{"class":680},[255,8260,564],{"class":269},[255,8262,8263],{"class":257,"line":299},[255,8264,434],{"class":269},[3144,8266,8268],{"id":8267},"on-阶乘全排列","O(n!) 阶乘：全排列",[183,8270,8271],{},"n 个互不相同的元素，第一个位置有 n 种选法，第二个位置剩 n − 1 种，一直乘到 1。路径总数就是 n!。n = 10 已经是三百多万，n = 12 接近 5 亿，所以只能枚举很小的 n。",[242,8273,8274,8517,8749,9022,9331],{},[245,8275,8277],{"className":247,"code":8276,"filename":249,"language":250,"meta":251,"style":251},"def permutations(nums):\n  result = []\n  used = [False] * len(nums)\n  path = []\n\n  def dfs():\n    if len(path) == len(nums):\n      result.append(path[:])\n      return\n    for i in range(len(nums)):\n      if used[i]:\n        continue\n      used[i] = True\n      path.append(nums[i])\n      dfs()\n      path.pop()\n      used[i] = False\n\n  dfs()\n  return result\n",[218,8278,8279,8292,8301,8321,8330,8334,8345,8369,8385,8390,8412,8425,8430,8446,8465,8473,8484,8499,8503,8510],{"__ignoreMap":251},[255,8280,8281,8283,8286,8288,8290],{"class":257,"line":258},[255,8282,262],{"class":261},[255,8284,8285],{"class":265}," permutations",[255,8287,315],{"class":269},[255,8289,3169],{"class":273},[255,8291,276],{"class":269},[255,8293,8294,8297,8299],{"class":257,"line":279},[255,8295,8296],{"class":295},"  result ",[255,8298,381],{"class":269},[255,8300,4452],{"class":269},[255,8302,8303,8306,8308,8311,8313,8315,8317,8319],{"class":257,"line":292},[255,8304,8305],{"class":295},"  used ",[255,8307,381],{"class":269},[255,8309,8310],{"class":269}," [False]",[255,8312,1353],{"class":269},[255,8314,4359],{"class":265},[255,8316,315],{"class":269},[255,8318,3169],{"class":265},[255,8320,5946],{"class":269},[255,8322,8323,8326,8328],{"class":257,"line":299},[255,8324,8325],{"class":295},"  path ",[255,8327,381],{"class":269},[255,8329,4452],{"class":269},[255,8331,8332],{"class":257,"line":322},[255,8333,389],{"emptyLinePlaceholder":388},[255,8335,8336,8339,8342],{"class":257,"line":334},[255,8337,8338],{"class":261},"  def",[255,8340,8341],{"class":265}," dfs",[255,8343,8344],{"class":269},"():\n",[255,8346,8347,8349,8351,8353,8356,8358,8361,8363,8365,8367],{"class":257,"line":423},[255,8348,3939],{"class":302},[255,8350,4359],{"class":265},[255,8352,315],{"class":269},[255,8354,8355],{"class":265},"path",[255,8357,465],{"class":269},[255,8359,8360],{"class":269}," ==",[255,8362,4359],{"class":265},[255,8364,315],{"class":269},[255,8366,3169],{"class":265},[255,8368,276],{"class":269},[255,8370,8371,8374,8376,8378,8380,8382],{"class":257,"line":431},[255,8372,8373],{"class":295},"      result",[255,8375,4533],{"class":269},[255,8377,4536],{"class":265},[255,8379,315],{"class":269},[255,8381,8355],{"class":265},[255,8383,8384],{"class":269},"[:])\n",[255,8386,8387],{"class":257,"line":1000},[255,8388,8389],{"class":302},"      return\n",[255,8391,8392,8394,8396,8398,8400,8402,8405,8407,8409],{"class":257,"line":1007},[255,8393,394],{"class":302},[255,8395,883],{"class":295},[255,8397,309],{"class":302},[255,8399,312],{"class":265},[255,8401,315],{"class":269},[255,8403,8404],{"class":265},"len",[255,8406,315],{"class":269},[255,8408,3169],{"class":265},[255,8410,8411],{"class":269},")):\n",[255,8413,8414,8416,8419,8421,8423],{"class":257,"line":1690},[255,8415,5993],{"class":302},[255,8417,8418],{"class":295}," used",[255,8420,3187],{"class":269},[255,8422,4510],{"class":295},[255,8424,4525],{"class":269},[255,8426,8427],{"class":257,"line":1700},[255,8428,8429],{"class":302},"        continue\n",[255,8431,8432,8435,8437,8439,8441,8443],{"class":257,"line":1718},[255,8433,8434],{"class":295},"      used",[255,8436,3187],{"class":269},[255,8438,4510],{"class":295},[255,8440,3258],{"class":269},[255,8442,285],{"class":269},[255,8444,8445],{"class":269}," True\n",[255,8447,8448,8451,8453,8455,8457,8459,8461,8463],{"class":257,"line":1735},[255,8449,8450],{"class":295},"      path",[255,8452,4533],{"class":269},[255,8454,4536],{"class":265},[255,8456,315],{"class":269},[255,8458,3169],{"class":265},[255,8460,3187],{"class":269},[255,8462,4510],{"class":265},[255,8464,4422],{"class":269},[255,8466,8467,8470],{"class":257,"line":1754},[255,8468,8469],{"class":265},"      dfs",[255,8471,8472],{"class":269},"()\n",[255,8474,8475,8477,8479,8482],{"class":257,"line":1773},[255,8476,8450],{"class":295},[255,8478,4533],{"class":269},[255,8480,8481],{"class":265},"pop",[255,8483,8472],{"class":269},[255,8485,8486,8488,8490,8492,8494,8496],{"class":257,"line":1778},[255,8487,8434],{"class":295},[255,8489,3187],{"class":269},[255,8491,4510],{"class":295},[255,8493,3258],{"class":269},[255,8495,285],{"class":269},[255,8497,8498],{"class":269}," False\n",[255,8500,8501],{"class":257,"line":1965},[255,8502,389],{"emptyLinePlaceholder":388},[255,8504,8505,8508],{"class":257,"line":1982},[255,8506,8507],{"class":265},"  dfs",[255,8509,8472],{"class":269},[255,8511,8512,8514],{"class":257,"line":1988},[255,8513,337],{"class":302},[255,8515,8516],{"class":295}," result\n",[245,8518,8520],{"className":343,"code":8519,"filename":345,"language":346,"meta":251,"style":251},"fun permutations(nums: IntArray): List\u003CList\u003CInt>> {\n    val result = mutableListOf\u003CList\u003CInt>>()\n    val used = BooleanArray(nums.size)\n    val path = mutableListOf\u003CInt>()\n\n    fun dfs() {\n        if (path.size == nums.size) {\n            result.add(path.toList())\n            return\n        }\n        for (i in nums.indices) {\n            if (used[i]) continue\n            used[i] = true\n            path.add(nums[i])\n            dfs()\n            path.removeAt(path.lastIndex)\n            used[i] = false\n        }\n    }\n\n    dfs()\n    return result\n}\n",[218,8521,8522,8546,8568,8583,8600,8604,8614,8627,8643,8648,8652,8663,8673,8684,8694,8701,8711,8720,8724,8728,8732,8739,8745],{"__ignoreMap":251},[255,8523,8524,8526,8528,8530,8532,8534,8536,8538,8540,8542,8544],{"class":257,"line":258},[255,8525,353],{"class":269},[255,8527,8285],{"class":265},[255,8529,3207],{"class":295},[255,8531,3210],{"class":361},[255,8533,365],{"class":295},[255,8535,3309],{"class":361},[255,8537,591],{"class":295},[255,8539,3309],{"class":361},[255,8541,591],{"class":295},[255,8543,362],{"class":361},[255,8545,7051],{"class":295},[255,8547,8548,8550,8553,8555,8557,8559,8561,8563,8565],{"class":257,"line":279},[255,8549,4690],{"class":269},[255,8551,8552],{"class":295}," result ",[255,8554,381],{"class":269},[255,8556,4757],{"class":265},[255,8558,591],{"class":295},[255,8560,3309],{"class":361},[255,8562,591],{"class":295},[255,8564,362],{"class":361},[255,8566,8567],{"class":295},">>()\n",[255,8569,8570,8572,8575,8577,8580],{"class":257,"line":292},[255,8571,4690],{"class":269},[255,8573,8574],{"class":295}," used ",[255,8576,381],{"class":269},[255,8578,8579],{"class":265}," BooleanArray",[255,8581,8582],{"class":295},"(nums.size)\n",[255,8584,8585,8587,8590,8592,8594,8596,8598],{"class":257,"line":299},[255,8586,4690],{"class":269},[255,8588,8589],{"class":295}," path ",[255,8591,381],{"class":269},[255,8593,4757],{"class":265},[255,8595,591],{"class":295},[255,8597,362],{"class":361},[255,8599,4764],{"class":295},[255,8601,8602],{"class":257,"line":322},[255,8603,389],{"emptyLinePlaceholder":388},[255,8605,8606,8609,8611],{"class":257,"line":334},[255,8607,8608],{"class":269},"    fun",[255,8610,8341],{"class":265},[255,8612,8613],{"class":295},"() {\n",[255,8615,8616,8618,8621,8624],{"class":257,"line":423},[255,8617,4020],{"class":302},[255,8619,8620],{"class":295}," (path.size ",[255,8622,8623],{"class":269},"==",[255,8625,8626],{"class":295}," nums.size) {\n",[255,8628,8629,8632,8634,8637,8640],{"class":257,"line":431},[255,8630,8631],{"class":295},"            result.",[255,8633,4825],{"class":265},[255,8635,8636],{"class":295},"(path.",[255,8638,8639],{"class":265},"toList",[255,8641,8642],{"class":295},"())\n",[255,8644,8645],{"class":257,"line":1000},[255,8646,8647],{"class":302},"            return\n",[255,8649,8650],{"class":257,"line":1007},[255,8651,993],{"class":295},[255,8653,8654,8656,8658,8660],{"class":257,"line":1690},[255,8655,966],{"class":302},[255,8657,969],{"class":295},[255,8659,309],{"class":269},[255,8661,8662],{"class":295}," nums.indices) {\n",[255,8664,8665,8667,8670],{"class":257,"line":1700},[255,8666,6139],{"class":302},[255,8668,8669],{"class":295}," (used[i]) ",[255,8671,8672],{"class":302},"continue\n",[255,8674,8675,8678,8680],{"class":257,"line":1718},[255,8676,8677],{"class":295},"            used[i] ",[255,8679,381],{"class":269},[255,8681,8683],{"class":8682},"sfNiH"," true\n",[255,8685,8686,8689,8691],{"class":257,"line":1735},[255,8687,8688],{"class":295},"            path.",[255,8690,4825],{"class":265},[255,8692,8693],{"class":295},"(nums[i])\n",[255,8695,8696,8699],{"class":257,"line":1754},[255,8697,8698],{"class":265},"            dfs",[255,8700,8472],{"class":295},[255,8702,8703,8705,8708],{"class":257,"line":1773},[255,8704,8688],{"class":295},[255,8706,8707],{"class":265},"removeAt",[255,8709,8710],{"class":295},"(path.lastIndex)\n",[255,8712,8713,8715,8717],{"class":257,"line":1778},[255,8714,8677],{"class":295},[255,8716,381],{"class":269},[255,8718,8719],{"class":8682}," false\n",[255,8721,8722],{"class":257,"line":1965},[255,8723,993],{"class":295},[255,8725,8726],{"class":257,"line":1982},[255,8727,420],{"class":295},[255,8729,8730],{"class":257,"line":1988},[255,8731,389],{"emptyLinePlaceholder":388},[255,8733,8734,8737],{"class":257,"line":1993},[255,8735,8736],{"class":265},"    dfs",[255,8738,8472],{"class":295},[255,8740,8741,8743],{"class":257,"line":1998},[255,8742,426],{"class":302},[255,8744,8516],{"class":295},[255,8746,8747],{"class":257,"line":2003},[255,8748,434],{"class":295},[245,8750,8752],{"className":437,"code":8751,"filename":439,"language":440,"meta":251,"style":251},"func permutations(_ nums: [Int]) -> [[Int]] {\n    var result: [[Int]] = []\n    var used = Array(repeating: false, count: nums.count)\n    var path: [Int] = []\n\n    func dfs() {\n        if path.count == nums.count {\n            result.append(path)\n            return\n        }\n        for i in 0..\u003Cnums.count {\n            if used[i] { continue }\n            used[i] = true\n            path.append(nums[i])\n            dfs()\n            path.removeLast()\n            used[i] = false\n        }\n    }\n\n    dfs()\n    return result\n}\n",[218,8753,8754,8784,8801,8831,8848,8852,8864,8877,8889,8893,8897,8914,8934,8949,8965,8971,8980,8994,8998,9002,9006,9012,9018],{"__ignoreMap":251},[255,8755,8756,8758,8760,8762,8764,8766,8768,8770,8772,8774,8776,8778,8780,8782],{"class":257,"line":258},[255,8757,447],{"class":261},[255,8759,8285],{"class":265},[255,8761,315],{"class":269},[255,8763,454],{"class":265},[255,8765,3184],{"class":273},[255,8767,460],{"class":295},[255,8769,3187],{"class":269},[255,8771,362],{"class":361},[255,8773,4071],{"class":269},[255,8775,468],{"class":269},[255,8777,6872],{"class":269},[255,8779,362],{"class":361},[255,8781,7188],{"class":269},[255,8783,370],{"class":269},[255,8785,8786,8788,8791,8793,8795,8797,8799],{"class":257,"line":279},[255,8787,375],{"class":288},[255,8789,8790],{"class":295}," result: ",[255,8792,7183],{"class":269},[255,8794,362],{"class":361},[255,8796,7188],{"class":269},[255,8798,285],{"class":269},[255,8800,4452],{"class":295},[255,8802,8803,8805,8807,8809,8811,8813,8815,8817,8820,8822,8824,8826,8829],{"class":257,"line":292},[255,8804,375],{"class":288},[255,8806,8574],{"class":295},[255,8808,381],{"class":269},[255,8810,7235],{"class":361},[255,8812,315],{"class":269},[255,8814,7240],{"class":265},[255,8816,3446],{"class":269},[255,8818,8819],{"class":8682}," false",[255,8821,3261],{"class":295},[255,8823,7257],{"class":265},[255,8825,3446],{"class":269},[255,8827,8828],{"class":295}," nums.count",[255,8830,5946],{"class":269},[255,8832,8833,8835,8838,8840,8842,8844,8846],{"class":257,"line":299},[255,8834,375],{"class":288},[255,8836,8837],{"class":295}," path: ",[255,8839,3187],{"class":269},[255,8841,362],{"class":361},[255,8843,3258],{"class":269},[255,8845,285],{"class":269},[255,8847,4452],{"class":295},[255,8849,8850],{"class":257,"line":322},[255,8851,389],{"emptyLinePlaceholder":388},[255,8853,8854,8857,8859,8862],{"class":257,"line":334},[255,8855,8856],{"class":261},"    func",[255,8858,8341],{"class":265},[255,8860,8861],{"class":269},"()",[255,8863,370],{"class":269},[255,8865,8866,8868,8871,8873,8875],{"class":257,"line":423},[255,8867,4020],{"class":302},[255,8869,8870],{"class":295}," path.count ",[255,8872,8623],{"class":269},[255,8874,4953],{"class":295},[255,8876,506],{"class":269},[255,8878,8879,8881,8883,8885,8887],{"class":257,"line":431},[255,8880,8631],{"class":295},[255,8882,4536],{"class":265},[255,8884,315],{"class":269},[255,8886,8355],{"class":295},[255,8888,5946],{"class":269},[255,8890,8891],{"class":257,"line":1000},[255,8892,8647],{"class":302},[255,8894,8895],{"class":257,"line":1007},[255,8896,993],{"class":269},[255,8898,8899,8901,8903,8905,8907,8909,8912],{"class":257,"line":1690},[255,8900,966],{"class":302},[255,8902,883],{"class":295},[255,8904,309],{"class":302},[255,8906,402],{"class":288},[255,8908,500],{"class":269},[255,8910,8911],{"class":295},"nums.count ",[255,8913,506],{"class":269},[255,8915,8916,8918,8920,8922,8924,8926,8928,8931],{"class":257,"line":1700},[255,8917,6139],{"class":302},[255,8919,8418],{"class":295},[255,8921,3187],{"class":269},[255,8923,4510],{"class":295},[255,8925,3258],{"class":269},[255,8927,4960],{"class":269},[255,8929,8930],{"class":302}," continue",[255,8932,8933],{"class":269}," }\n",[255,8935,8936,8939,8941,8943,8945,8947],{"class":257,"line":1718},[255,8937,8938],{"class":295},"            used",[255,8940,3187],{"class":269},[255,8942,4510],{"class":295},[255,8944,3258],{"class":269},[255,8946,285],{"class":269},[255,8948,8683],{"class":8682},[255,8950,8951,8953,8955,8957,8959,8961,8963],{"class":257,"line":1735},[255,8952,8688],{"class":295},[255,8954,4536],{"class":265},[255,8956,315],{"class":269},[255,8958,3169],{"class":295},[255,8960,3187],{"class":269},[255,8962,4510],{"class":295},[255,8964,4422],{"class":269},[255,8966,8967,8969],{"class":257,"line":1754},[255,8968,8698],{"class":265},[255,8970,8472],{"class":269},[255,8972,8973,8975,8978],{"class":257,"line":1773},[255,8974,8688],{"class":295},[255,8976,8977],{"class":265},"removeLast",[255,8979,8472],{"class":269},[255,8981,8982,8984,8986,8988,8990,8992],{"class":257,"line":1778},[255,8983,8938],{"class":295},[255,8985,3187],{"class":269},[255,8987,4510],{"class":295},[255,8989,3258],{"class":269},[255,8991,285],{"class":269},[255,8993,8719],{"class":8682},[255,8995,8996],{"class":257,"line":1965},[255,8997,993],{"class":269},[255,8999,9000],{"class":257,"line":1982},[255,9001,420],{"class":269},[255,9003,9004],{"class":257,"line":1988},[255,9005,389],{"emptyLinePlaceholder":388},[255,9007,9008,9010],{"class":257,"line":1993},[255,9009,8736],{"class":265},[255,9011,8472],{"class":269},[255,9013,9014,9016],{"class":257,"line":1998},[255,9015,426],{"class":302},[255,9017,8516],{"class":295},[255,9019,9020],{"class":257,"line":2003},[255,9021,434],{"class":269},[245,9023,9025],{"className":531,"code":9024,"filename":533,"language":534,"meta":251,"style":251},"List\u003CList\u003Cint>> permutations(List\u003Cint> nums) {\n  final result = \u003CList\u003Cint>>[];\n  final used = List\u003Cbool>.filled(nums.length, false);\n  final path = \u003Cint>[];\n\n  void dfs() {\n    if (path.length == nums.length) {\n      result.add(List\u003Cint>.from(path));\n      return;\n    }\n    for (var i = 0; i \u003C nums.length; i++) {\n      if (used[i]) continue;\n      used[i] = true;\n      path.add(nums[i]);\n      dfs();\n      path.removeLast();\n      used[i] = false;\n    }\n  }\n\n  dfs();\n  return result;\n}\n",[218,9026,9027,9054,9078,9113,9131,9135,9144,9163,9190,9197,9201,9235,9246,9256,9269,9277,9289,9298,9302,9306,9310,9318,9327],{"__ignoreMap":251},[255,9028,9029,9031,9033,9035,9037,9039,9041,9044,9046,9048,9050,9052],{"class":257,"line":258},[255,9030,3309],{"class":361},[255,9032,591],{"class":295},[255,9034,3309],{"class":361},[255,9036,591],{"class":295},[255,9038,541],{"class":361},[255,9040,7403],{"class":295},[255,9042,9043],{"class":265},"permutations",[255,9045,315],{"class":295},[255,9047,3309],{"class":361},[255,9049,591],{"class":295},[255,9051,541],{"class":361},[255,9053,4162],{"class":295},[255,9055,9056,9058,9060,9062,9064,9066,9068,9070,9072,9074,9076],{"class":257,"line":279},[255,9057,5295],{"class":261},[255,9059,8552],{"class":295},[255,9061,381],{"class":269},[255,9063,696],{"class":269},[255,9065,3309],{"class":361},[255,9067,591],{"class":295},[255,9069,541],{"class":361},[255,9071,3944],{"class":295},[255,9073,3944],{"class":269},[255,9075,5379],{"class":295},[255,9077,564],{"class":269},[255,9079,9080,9082,9084,9086,9088,9090,9093,9095,9097,9099,9101,9103,9105,9107,9109,9111],{"class":257,"line":292},[255,9081,5295],{"class":261},[255,9083,8574],{"class":295},[255,9085,381],{"class":269},[255,9087,7426],{"class":361},[255,9089,591],{"class":295},[255,9091,9092],{"class":361},"bool",[255,9094,3944],{"class":295},[255,9096,4533],{"class":269},[255,9098,7486],{"class":265},[255,9100,5325],{"class":295},[255,9102,4533],{"class":269},[255,9104,5585],{"class":295},[255,9106,3172],{"class":269},[255,9108,8819],{"class":269},[255,9110,465],{"class":295},[255,9112,564],{"class":269},[255,9114,9115,9117,9119,9121,9123,9125,9127,9129],{"class":257,"line":299},[255,9116,5295],{"class":261},[255,9118,8589],{"class":295},[255,9120,381],{"class":269},[255,9122,696],{"class":269},[255,9124,541],{"class":361},[255,9126,3944],{"class":269},[255,9128,5379],{"class":295},[255,9130,564],{"class":269},[255,9132,9133],{"class":257,"line":322},[255,9134,389],{"emptyLinePlaceholder":388},[255,9136,9137,9140,9142],{"class":257,"line":334},[255,9138,9139],{"class":261},"  void",[255,9141,8341],{"class":265},[255,9143,8613],{"class":295},[255,9145,9146,9148,9151,9153,9155,9157,9159,9161],{"class":257,"line":423},[255,9147,3939],{"class":302},[255,9149,9150],{"class":295}," (path",[255,9152,4533],{"class":269},[255,9154,5278],{"class":295},[255,9156,8623],{"class":269},[255,9158,3184],{"class":295},[255,9160,4533],{"class":269},[255,9162,5432],{"class":295},[255,9164,9165,9167,9169,9171,9173,9175,9177,9179,9181,9183,9185,9188],{"class":257,"line":431},[255,9166,8373],{"class":295},[255,9168,4533],{"class":269},[255,9170,4825],{"class":265},[255,9172,315],{"class":295},[255,9174,3309],{"class":361},[255,9176,591],{"class":295},[255,9178,541],{"class":361},[255,9180,3944],{"class":295},[255,9182,4533],{"class":269},[255,9184,7681],{"class":265},[255,9186,9187],{"class":295},"(path))",[255,9189,564],{"class":269},[255,9191,9192,9195],{"class":257,"line":1000},[255,9193,9194],{"class":302},"      return",[255,9196,564],{"class":269},[255,9198,9199],{"class":257,"line":1007},[255,9200,420],{"class":295},[255,9202,9203,9205,9207,9209,9211,9213,9215,9217,9219,9221,9223,9225,9227,9229,9231,9233],{"class":257,"line":1690},[255,9204,394],{"class":302},[255,9206,270],{"class":295},[255,9208,577],{"class":261},[255,9210,883],{"class":295},[255,9212,381],{"class":269},[255,9214,402],{"class":288},[255,9216,586],{"class":269},[255,9218,883],{"class":295},[255,9220,591],{"class":269},[255,9222,3184],{"class":295},[255,9224,4533],{"class":269},[255,9226,5585],{"class":295},[255,9228,586],{"class":269},[255,9230,1204],{"class":295},[255,9232,601],{"class":269},[255,9234,604],{"class":295},[255,9236,9237,9239,9241,9244],{"class":257,"line":1700},[255,9238,5993],{"class":302},[255,9240,8669],{"class":295},[255,9242,9243],{"class":302},"continue",[255,9245,564],{"class":269},[255,9247,9248,9251,9253],{"class":257,"line":1718},[255,9249,9250],{"class":295},"      used[i] ",[255,9252,381],{"class":269},[255,9254,9255],{"class":269}," true;\n",[255,9257,9258,9260,9262,9264,9267],{"class":257,"line":1735},[255,9259,8450],{"class":295},[255,9261,4533],{"class":269},[255,9263,4825],{"class":265},[255,9265,9266],{"class":295},"(nums[i])",[255,9268,564],{"class":269},[255,9270,9271,9273,9275],{"class":257,"line":1754},[255,9272,8469],{"class":265},[255,9274,8861],{"class":295},[255,9276,564],{"class":269},[255,9278,9279,9281,9283,9285,9287],{"class":257,"line":1773},[255,9280,8450],{"class":295},[255,9282,4533],{"class":269},[255,9284,8977],{"class":265},[255,9286,8861],{"class":295},[255,9288,564],{"class":269},[255,9290,9291,9293,9295],{"class":257,"line":1778},[255,9292,9250],{"class":295},[255,9294,381],{"class":269},[255,9296,9297],{"class":269}," false;\n",[255,9299,9300],{"class":257,"line":1965},[255,9301,420],{"class":295},[255,9303,9304],{"class":257,"line":1982},[255,9305,620],{"class":295},[255,9307,9308],{"class":257,"line":1988},[255,9309,389],{"emptyLinePlaceholder":388},[255,9311,9312,9314,9316],{"class":257,"line":1993},[255,9313,8507],{"class":265},[255,9315,8861],{"class":295},[255,9317,564],{"class":269},[255,9319,9320,9322,9325],{"class":257,"line":1998},[255,9321,337],{"class":302},[255,9323,9324],{"class":295}," result",[255,9326,564],{"class":269},[255,9328,9329],{"class":257,"line":2003},[255,9330,434],{"class":295},[245,9332,9334],{"className":636,"code":9333,"filename":638,"language":639,"meta":251,"style":251},"function permutations(nums) {\n  const result = [];\n  const used = Array(nums.length).fill(false);\n  const path = [];\n\n  function dfs() {\n    if (path.length === nums.length) {\n      result.push(path.slice());\n      return;\n    }\n    for (let i = 0; i \u003C nums.length; i++) {\n      if (used[i]) continue;\n      used[i] = true;\n      path.push(nums[i]);\n      dfs();\n      path.pop();\n      used[i] = false;\n    }\n  }\n\n  dfs();\n  return result;\n}\n",[218,9335,9336,9350,9362,9395,9408,9412,9423,9448,9469,9475,9479,9515,9534,9551,9571,9579,9591,9607,9611,9615,9619,9627,9635],{"__ignoreMap":251},[255,9337,9338,9340,9342,9344,9346,9348],{"class":257,"line":258},[255,9339,646],{"class":261},[255,9341,8285],{"class":265},[255,9343,315],{"class":269},[255,9345,3169],{"class":273},[255,9347,465],{"class":269},[255,9349,370],{"class":269},[255,9351,9352,9354,9356,9358,9360],{"class":257,"line":279},[255,9353,5602],{"class":261},[255,9355,9324],{"class":295},[255,9357,285],{"class":269},[255,9359,5701],{"class":680},[255,9361,564],{"class":269},[255,9363,9364,9366,9368,9370,9372,9374,9376,9378,9380,9382,9384,9386,9388,9391,9393],{"class":257,"line":292},[255,9365,5602],{"class":261},[255,9367,8418],{"class":295},[255,9369,285],{"class":269},[255,9371,7235],{"class":265},[255,9373,315],{"class":680},[255,9375,3169],{"class":295},[255,9377,4533],{"class":269},[255,9379,5585],{"class":295},[255,9381,465],{"class":680},[255,9383,4533],{"class":269},[255,9385,7714],{"class":265},[255,9387,315],{"class":680},[255,9389,9390],{"class":8682},"false",[255,9392,465],{"class":680},[255,9394,564],{"class":269},[255,9396,9397,9399,9402,9404,9406],{"class":257,"line":299},[255,9398,5602],{"class":261},[255,9400,9401],{"class":295}," path",[255,9403,285],{"class":269},[255,9405,5701],{"class":680},[255,9407,564],{"class":269},[255,9409,9410],{"class":257,"line":322},[255,9411,389],{"emptyLinePlaceholder":388},[255,9413,9414,9417,9419,9421],{"class":257,"line":334},[255,9415,9416],{"class":261},"  function",[255,9418,8341],{"class":265},[255,9420,8861],{"class":269},[255,9422,370],{"class":269},[255,9424,9425,9427,9429,9431,9433,9435,9438,9440,9442,9444,9446],{"class":257,"line":423},[255,9426,3939],{"class":302},[255,9428,270],{"class":680},[255,9430,8355],{"class":295},[255,9432,4533],{"class":269},[255,9434,5585],{"class":295},[255,9436,9437],{"class":269}," ===",[255,9439,3184],{"class":295},[255,9441,4533],{"class":269},[255,9443,5585],{"class":295},[255,9445,707],{"class":680},[255,9447,506],{"class":269},[255,9449,9450,9452,9454,9456,9458,9460,9462,9464,9467],{"class":257,"line":431},[255,9451,8373],{"class":295},[255,9453,4533],{"class":269},[255,9455,5797],{"class":265},[255,9457,315],{"class":680},[255,9459,8355],{"class":295},[255,9461,4533],{"class":269},[255,9463,5651],{"class":265},[255,9465,9466],{"class":680},"())",[255,9468,564],{"class":269},[255,9470,9471,9473],{"class":257,"line":1000},[255,9472,9194],{"class":302},[255,9474,564],{"class":269},[255,9476,9477],{"class":257,"line":1007},[255,9478,420],{"class":269},[255,9480,9481,9483,9485,9487,9489,9491,9493,9495,9497,9499,9501,9503,9505,9507,9509,9511,9513],{"class":257,"line":1690},[255,9482,394],{"class":302},[255,9484,270],{"class":680},[255,9486,683],{"class":261},[255,9488,1204],{"class":295},[255,9490,285],{"class":269},[255,9492,402],{"class":288},[255,9494,586],{"class":269},[255,9496,1204],{"class":295},[255,9498,696],{"class":269},[255,9500,3184],{"class":295},[255,9502,4533],{"class":269},[255,9504,5585],{"class":295},[255,9506,586],{"class":269},[255,9508,1204],{"class":295},[255,9510,601],{"class":269},[255,9512,707],{"class":680},[255,9514,506],{"class":269},[255,9516,9517,9519,9521,9524,9526,9528,9530,9532],{"class":257,"line":1700},[255,9518,5993],{"class":302},[255,9520,270],{"class":680},[255,9522,9523],{"class":295},"used",[255,9525,3187],{"class":680},[255,9527,4510],{"class":295},[255,9529,5786],{"class":680},[255,9531,9243],{"class":302},[255,9533,564],{"class":269},[255,9535,9536,9538,9540,9542,9544,9546,9549],{"class":257,"line":1718},[255,9537,8434],{"class":295},[255,9539,3187],{"class":680},[255,9541,4510],{"class":295},[255,9543,5775],{"class":680},[255,9545,381],{"class":269},[255,9547,9548],{"class":8682}," true",[255,9550,564],{"class":269},[255,9552,9553,9555,9557,9559,9561,9563,9565,9567,9569],{"class":257,"line":1735},[255,9554,8450],{"class":295},[255,9556,4533],{"class":269},[255,9558,5797],{"class":265},[255,9560,315],{"class":680},[255,9562,3169],{"class":295},[255,9564,3187],{"class":680},[255,9566,4510],{"class":295},[255,9568,4071],{"class":680},[255,9570,564],{"class":269},[255,9572,9573,9575,9577],{"class":257,"line":1754},[255,9574,8469],{"class":265},[255,9576,8861],{"class":680},[255,9578,564],{"class":269},[255,9580,9581,9583,9585,9587,9589],{"class":257,"line":1773},[255,9582,8450],{"class":295},[255,9584,4533],{"class":269},[255,9586,8481],{"class":265},[255,9588,8861],{"class":680},[255,9590,564],{"class":269},[255,9592,9593,9595,9597,9599,9601,9603,9605],{"class":257,"line":1778},[255,9594,8434],{"class":295},[255,9596,3187],{"class":680},[255,9598,4510],{"class":295},[255,9600,5775],{"class":680},[255,9602,381],{"class":269},[255,9604,8819],{"class":8682},[255,9606,564],{"class":269},[255,9608,9609],{"class":257,"line":1965},[255,9610,420],{"class":269},[255,9612,9613],{"class":257,"line":1982},[255,9614,620],{"class":269},[255,9616,9617],{"class":257,"line":1988},[255,9618,389],{"emptyLinePlaceholder":388},[255,9620,9621,9623,9625],{"class":257,"line":1993},[255,9622,8507],{"class":265},[255,9624,8861],{"class":680},[255,9626,564],{"class":269},[255,9628,9629,9631,9633],{"class":257,"line":1998},[255,9630,337],{"class":302},[255,9632,9324],{"class":295},[255,9634,564],{"class":269},[255,9636,9637],{"class":257,"line":2003},[255,9638,434],{"class":269},[768,9640,9641],{"id":9641},"平均复杂度",[183,9643,9644],{},"除了数据规模，输入数据的具体情况也会影响算法的运行时间。",[183,9646,9647],{},"我们来看这么一段代码：",[242,9649,9650,9754,9862,9990,10123],{},[245,9651,9653],{"className":247,"code":9652,"filename":249,"language":250,"meta":251,"style":251},"def find_word(lst, word):\n  flag = -1\n\n  for i in range(len(lst)):\n    if lst[i] == word:\n      flag = i\n      break\n\n  return flag\n",[218,9654,9655,9674,9686,9690,9710,9729,9738,9743,9747],{"__ignoreMap":251},[255,9656,9657,9659,9662,9664,9667,9669,9672],{"class":257,"line":258},[255,9658,262],{"class":261},[255,9660,9661],{"class":265}," find_word",[255,9663,315],{"class":269},[255,9665,9666],{"class":273},"lst",[255,9668,3172],{"class":269},[255,9670,9671],{"class":273}," word",[255,9673,276],{"class":269},[255,9675,9676,9679,9681,9683],{"class":257,"line":279},[255,9677,9678],{"class":295},"  flag ",[255,9680,381],{"class":269},[255,9682,5984],{"class":269},[255,9684,9685],{"class":288},"1\n",[255,9687,9688],{"class":257,"line":292},[255,9689,389],{"emptyLinePlaceholder":388},[255,9691,9692,9694,9696,9698,9700,9702,9704,9706,9708],{"class":257,"line":299},[255,9693,303],{"class":302},[255,9695,883],{"class":295},[255,9697,309],{"class":302},[255,9699,312],{"class":265},[255,9701,315],{"class":269},[255,9703,8404],{"class":265},[255,9705,315],{"class":269},[255,9707,9666],{"class":265},[255,9709,8411],{"class":269},[255,9711,9712,9714,9717,9719,9721,9723,9725,9727],{"class":257,"line":322},[255,9713,3939],{"class":302},[255,9715,9716],{"class":295}," lst",[255,9718,3187],{"class":269},[255,9720,4510],{"class":295},[255,9722,3258],{"class":269},[255,9724,8360],{"class":269},[255,9726,9671],{"class":295},[255,9728,3934],{"class":269},[255,9730,9731,9734,9736],{"class":257,"line":334},[255,9732,9733],{"class":295},"      flag ",[255,9735,381],{"class":269},[255,9737,908],{"class":295},[255,9739,9740],{"class":257,"line":423},[255,9741,9742],{"class":302},"      break\n",[255,9744,9745],{"class":257,"line":431},[255,9746,389],{"emptyLinePlaceholder":388},[255,9748,9749,9751],{"class":257,"line":1000},[255,9750,337],{"class":302},[255,9752,9753],{"class":295}," flag\n",[245,9755,9757],{"className":343,"code":9756,"filename":345,"language":346,"meta":251,"style":251},"fun find_word(lst: List\u003CString>, word: String): Int {\n    var flag = -1\n\n    for (i in lst.indices) {\n        if (lst[i] == word) {\n            flag = i\n            break\n        }\n    }\n\n    return flag\n}\n",[218,9758,9759,9786,9799,9803,9814,9826,9835,9840,9844,9848,9852,9858],{"__ignoreMap":251},[255,9760,9761,9763,9765,9768,9770,9772,9775,9778,9780,9782,9784],{"class":257,"line":258},[255,9762,353],{"class":269},[255,9764,9661],{"class":265},[255,9766,9767],{"class":295},"(lst: ",[255,9769,3309],{"class":361},[255,9771,591],{"class":295},[255,9773,9774],{"class":361},"String",[255,9776,9777],{"class":295},">, word: ",[255,9779,9774],{"class":361},[255,9781,365],{"class":295},[255,9783,362],{"class":361},[255,9785,370],{"class":295},[255,9787,9788,9790,9793,9795,9797],{"class":257,"line":279},[255,9789,375],{"class":269},[255,9791,9792],{"class":295}," flag ",[255,9794,381],{"class":269},[255,9796,5984],{"class":269},[255,9798,9685],{"class":288},[255,9800,9801],{"class":257,"line":292},[255,9802,389],{"emptyLinePlaceholder":388},[255,9804,9805,9807,9809,9811],{"class":257,"line":299},[255,9806,394],{"class":302},[255,9808,969],{"class":295},[255,9810,309],{"class":269},[255,9812,9813],{"class":295}," lst.indices) {\n",[255,9815,9816,9818,9821,9823],{"class":257,"line":322},[255,9817,4020],{"class":302},[255,9819,9820],{"class":295}," (lst[i] ",[255,9822,8623],{"class":269},[255,9824,9825],{"class":295}," word) {\n",[255,9827,9828,9831,9833],{"class":257,"line":334},[255,9829,9830],{"class":295},"            flag ",[255,9832,381],{"class":269},[255,9834,908],{"class":295},[255,9836,9837],{"class":257,"line":423},[255,9838,9839],{"class":302},"            break\n",[255,9841,9842],{"class":257,"line":431},[255,9843,993],{"class":295},[255,9845,9846],{"class":257,"line":1000},[255,9847,420],{"class":295},[255,9849,9850],{"class":257,"line":1007},[255,9851,389],{"emptyLinePlaceholder":388},[255,9853,9854,9856],{"class":257,"line":1690},[255,9855,426],{"class":302},[255,9857,9753],{"class":295},[255,9859,9860],{"class":257,"line":1700},[255,9861,434],{"class":295},[245,9863,9865],{"className":437,"code":9864,"filename":439,"language":440,"meta":251,"style":251},"func find_word(_ lst: [String], _ word: String) -> Int {\n    var flag = -1\n\n    for i in 0..\u003Clst.count {\n        if lst[i] == word {\n            flag = i\n            break\n        }\n    }\n\n    return flag\n}\n",[218,9866,9867,9905,9916,9920,9937,9956,9964,9968,9972,9976,9980,9986],{"__ignoreMap":251},[255,9868,9869,9871,9873,9875,9877,9879,9881,9883,9885,9887,9889,9891,9893,9895,9897,9899,9901,9903],{"class":257,"line":258},[255,9870,447],{"class":261},[255,9872,9661],{"class":265},[255,9874,315],{"class":269},[255,9876,454],{"class":265},[255,9878,9716],{"class":273},[255,9880,460],{"class":295},[255,9882,3187],{"class":269},[255,9884,9774],{"class":361},[255,9886,3258],{"class":269},[255,9888,3261],{"class":295},[255,9890,454],{"class":265},[255,9892,9671],{"class":273},[255,9894,460],{"class":295},[255,9896,9774],{"class":361},[255,9898,465],{"class":269},[255,9900,468],{"class":269},[255,9902,471],{"class":361},[255,9904,370],{"class":269},[255,9906,9907,9909,9911,9913],{"class":257,"line":279},[255,9908,375],{"class":288},[255,9910,9792],{"class":295},[255,9912,381],{"class":269},[255,9914,9915],{"class":288}," -1\n",[255,9917,9918],{"class":257,"line":292},[255,9919,389],{"emptyLinePlaceholder":388},[255,9921,9922,9924,9926,9928,9930,9932,9935],{"class":257,"line":299},[255,9923,394],{"class":302},[255,9925,883],{"class":295},[255,9927,309],{"class":302},[255,9929,402],{"class":288},[255,9931,500],{"class":269},[255,9933,9934],{"class":295},"lst.count ",[255,9936,506],{"class":269},[255,9938,9939,9941,9943,9945,9947,9949,9951,9954],{"class":257,"line":322},[255,9940,4020],{"class":302},[255,9942,9716],{"class":295},[255,9944,3187],{"class":269},[255,9946,4510],{"class":295},[255,9948,3258],{"class":269},[255,9950,8360],{"class":269},[255,9952,9953],{"class":295}," word ",[255,9955,506],{"class":269},[255,9957,9958,9960,9962],{"class":257,"line":334},[255,9959,9830],{"class":295},[255,9961,381],{"class":269},[255,9963,908],{"class":295},[255,9965,9966],{"class":257,"line":423},[255,9967,9839],{"class":302},[255,9969,9970],{"class":257,"line":431},[255,9971,993],{"class":269},[255,9973,9974],{"class":257,"line":1000},[255,9975,420],{"class":269},[255,9977,9978],{"class":257,"line":1007},[255,9979,389],{"emptyLinePlaceholder":388},[255,9981,9982,9984],{"class":257,"line":1690},[255,9983,426],{"class":302},[255,9985,9753],{"class":295},[255,9987,9988],{"class":257,"line":1700},[255,9989,434],{"class":269},[245,9991,9993],{"className":531,"code":9992,"filename":533,"language":534,"meta":251,"style":251},"int find_word(List\u003CString> lst, String word) {\n  var flag = -1;\n\n  for (var i = 0; i \u003C lst.length; i++) {\n    if (lst[i] == word) {\n      flag = i;\n      break;\n    }\n  }\n\n  return flag;\n}\n",[218,9994,9995,10019,10033,10037,10071,10081,10091,10098,10102,10106,10110,10119],{"__ignoreMap":251},[255,9996,9997,9999,10001,10003,10005,10007,10009,10012,10014,10017],{"class":257,"line":258},[255,9998,541],{"class":361},[255,10000,9661],{"class":265},[255,10002,315],{"class":295},[255,10004,3309],{"class":361},[255,10006,591],{"class":295},[255,10008,9774],{"class":361},[255,10010,10011],{"class":295},"> lst",[255,10013,3172],{"class":269},[255,10015,10016],{"class":361}," String",[255,10018,9825],{"class":295},[255,10020,10021,10023,10025,10027,10029,10031],{"class":257,"line":279},[255,10022,555],{"class":261},[255,10024,9792],{"class":295},[255,10026,381],{"class":269},[255,10028,5984],{"class":269},[255,10030,785],{"class":288},[255,10032,564],{"class":269},[255,10034,10035],{"class":257,"line":292},[255,10036,389],{"emptyLinePlaceholder":388},[255,10038,10039,10041,10043,10045,10047,10049,10051,10053,10055,10057,10059,10061,10063,10065,10067,10069],{"class":257,"line":299},[255,10040,303],{"class":302},[255,10042,270],{"class":295},[255,10044,577],{"class":261},[255,10046,883],{"class":295},[255,10048,381],{"class":269},[255,10050,402],{"class":288},[255,10052,586],{"class":269},[255,10054,883],{"class":295},[255,10056,591],{"class":269},[255,10058,9716],{"class":295},[255,10060,4533],{"class":269},[255,10062,5585],{"class":295},[255,10064,586],{"class":269},[255,10066,1204],{"class":295},[255,10068,601],{"class":269},[255,10070,604],{"class":295},[255,10072,10073,10075,10077,10079],{"class":257,"line":322},[255,10074,3939],{"class":302},[255,10076,9820],{"class":295},[255,10078,8623],{"class":269},[255,10080,9825],{"class":295},[255,10082,10083,10085,10087,10089],{"class":257,"line":334},[255,10084,9733],{"class":295},[255,10086,381],{"class":269},[255,10088,1204],{"class":295},[255,10090,564],{"class":269},[255,10092,10093,10096],{"class":257,"line":423},[255,10094,10095],{"class":302},"      break",[255,10097,564],{"class":269},[255,10099,10100],{"class":257,"line":431},[255,10101,420],{"class":295},[255,10103,10104],{"class":257,"line":1000},[255,10105,620],{"class":295},[255,10107,10108],{"class":257,"line":1007},[255,10109,389],{"emptyLinePlaceholder":388},[255,10111,10112,10114,10117],{"class":257,"line":1690},[255,10113,337],{"class":302},[255,10115,10116],{"class":295}," flag",[255,10118,564],{"class":269},[255,10120,10121],{"class":257,"line":1700},[255,10122,434],{"class":295},[245,10124,10126],{"className":636,"code":10125,"filename":638,"language":639,"meta":251,"style":251},"function find_word(lst, word) {\n  let flag = -1;\n\n  for (let i = 0; i \u003C lst.length; i++) {\n    if (lst[i] === word) {\n      flag = i;\n      break;\n    }\n  }\n\n  return flag;\n}\n",[218,10127,10128,10146,10160,10164,10200,10223,10234,10240,10244,10248,10252,10260],{"__ignoreMap":251},[255,10129,10130,10132,10134,10136,10138,10140,10142,10144],{"class":257,"line":258},[255,10131,646],{"class":261},[255,10133,9661],{"class":265},[255,10135,315],{"class":269},[255,10137,9666],{"class":273},[255,10139,3172],{"class":269},[255,10141,9671],{"class":273},[255,10143,465],{"class":269},[255,10145,370],{"class":269},[255,10147,10148,10150,10152,10154,10156,10158],{"class":257,"line":279},[255,10149,661],{"class":261},[255,10151,10116],{"class":295},[255,10153,285],{"class":269},[255,10155,5984],{"class":269},[255,10157,785],{"class":288},[255,10159,564],{"class":269},[255,10161,10162],{"class":257,"line":292},[255,10163,389],{"emptyLinePlaceholder":388},[255,10165,10166,10168,10170,10172,10174,10176,10178,10180,10182,10184,10186,10188,10190,10192,10194,10196,10198],{"class":257,"line":299},[255,10167,303],{"class":302},[255,10169,270],{"class":680},[255,10171,683],{"class":261},[255,10173,1204],{"class":295},[255,10175,285],{"class":269},[255,10177,402],{"class":288},[255,10179,586],{"class":269},[255,10181,1204],{"class":295},[255,10183,696],{"class":269},[255,10185,9716],{"class":295},[255,10187,4533],{"class":269},[255,10189,5585],{"class":295},[255,10191,586],{"class":269},[255,10193,1204],{"class":295},[255,10195,601],{"class":269},[255,10197,707],{"class":680},[255,10199,506],{"class":269},[255,10201,10202,10204,10206,10208,10210,10212,10214,10217,10219,10221],{"class":257,"line":322},[255,10203,3939],{"class":302},[255,10205,270],{"class":680},[255,10207,9666],{"class":295},[255,10209,3187],{"class":680},[255,10211,4510],{"class":295},[255,10213,5775],{"class":680},[255,10215,10216],{"class":269},"===",[255,10218,9671],{"class":295},[255,10220,707],{"class":680},[255,10222,506],{"class":269},[255,10224,10225,10228,10230,10232],{"class":257,"line":334},[255,10226,10227],{"class":295},"      flag",[255,10229,285],{"class":269},[255,10231,1204],{"class":295},[255,10233,564],{"class":269},[255,10235,10236,10238],{"class":257,"line":423},[255,10237,10095],{"class":302},[255,10239,564],{"class":269},[255,10241,10242],{"class":257,"line":431},[255,10243,420],{"class":269},[255,10245,10246],{"class":257,"line":1000},[255,10247,620],{"class":269},[255,10249,10250],{"class":257,"line":1007},[255,10251,389],{"emptyLinePlaceholder":388},[255,10253,10254,10256,10258],{"class":257,"line":1690},[255,10255,337],{"class":302},[255,10257,10116],{"class":295},[255,10259,564],{"class":269},[255,10261,10262],{"class":257,"line":1700},[255,10263,434],{"class":269},[183,10265,10266,10267,10270,10271,10273],{},"上面这段代码用于查找变量 ",[218,10268,10269],{},"word"," 在列表 ",[218,10272,9666],{}," 中出现的位置，可以用来解释“数据的具体情况”是什么意思。",[183,10275,10276,10277,10280,10281,10283,10284,10287,10288,10290],{},"拿 ",[218,10278,10279],{},"lst = ['a', 'b', 'c', 'd']"," 来数一遍。循环碰到 ",[218,10282,10269],{}," 就 ",[218,10285,10286],{},"break","，所以比几次完全看 ",[218,10289,10269],{}," 落在哪：",[1455,10292,10293,10305],{},[1458,10294,10295],{},[1461,10296,10297,10299,10302],{},[1464,10298,10269],{},[1464,10300,10301],{},"停在哪",[1464,10303,10304],{},"循环次数",[1489,10306,10307,10319,10331,10344,10357],{},[1461,10308,10309,10314,10317],{},[1494,10310,10311],{},[218,10312,10313],{},"'a'",[1494,10315,10316],{},"第 1 个就命中",[1494,10318,785],{},[1461,10320,10321,10326,10329],{},[1494,10322,10323],{},[218,10324,10325],{},"'b'",[1494,10327,10328],{},"第 2 个命中",[1494,10330,805],{},[1461,10332,10333,10338,10341],{},[1494,10334,10335],{},[218,10336,10337],{},"'c'",[1494,10339,10340],{},"第 3 个命中",[1494,10342,10343],{},"3",[1461,10345,10346,10351,10354],{},[1494,10347,10348],{},[218,10349,10350],{},"'d'",[1494,10352,10353],{},"最后一个才命中",[1494,10355,10356],{},"4",[1461,10358,10359,10364,10367],{},[1494,10360,10361],{},[218,10362,10363],{},"'e'",[1494,10365,10366],{},"列表里没有，只能走完",[1494,10368,10356],{},[193,10370,10371,10376],{},[196,10372,10373,10374,1411],{},"第 1 个就命中时，后面都不用看，这是最好情况，时间复杂度是 ",[218,10375,2998],{},[196,10377,10378,10380,10381,10383,10384,1411],{},[218,10379,10269],{}," 在末尾，或者像 ",[218,10382,10363],{}," 这样根本不在列表里，都要把整个列表走完，这是最坏情况，时间复杂度是 ",[218,10385,1503],{},[183,10387,10388],{},"这就是数据具体情况不同，代码的时间复杂度不同。我们得出下面 3 种情况：",[193,10390,10391,10405,10416],{},[196,10392,10393,10396,10397,10399,10400,10402,10403,1411],{},[199,10394,10395],{},"最好时间复杂度（Best Case）","：最理想情况下的复杂度，例如 ",[218,10398,10269],{}," 恰好是列表 ",[218,10401,9666],{}," 的第 1 个元素，对应 ",[218,10404,2998],{},[196,10406,10407,10410,10411,10413,10414,1411],{},[199,10408,10409],{},"最坏时间复杂度（Worst Case）","：最差情况下的复杂度，例如 ",[218,10412,10269],{}," 在列表末尾或不存在，对应 ",[218,10415,1503],{},[196,10417,10418,10421],{},[199,10419,10420],{},"平均时间复杂度（Average Case）","：综合各种输入情况及其发生概率得到的期望复杂度。",[183,10423,10424],{},"那么怎么计算平均时间复杂度呢？需要用到概率论的知识。",[183,10426,10427],{},"我们仍然用上面的例子来说明：",[193,10429,10430,10441],{},[196,10431,10432,10433,10270,10435,10437,10438,1411],{},"从整体看，查找变量 ",[218,10434,4292],{},[218,10436,9666],{}," 中的位置有两种情况：存在或不存在。假设两种情况的概率都是 ",[218,10439,10440],{},"1\u002F2",[196,10442,10443,10444,10446,10447,10449,10450,10452,10453,10456,10457,1411],{},"如果 ",[218,10445,4292],{}," 出现在列表 ",[218,10448,9666],{}," 中，那么它可能出现在 ",[218,10451,3918],{}," 到 ",[218,10454,10455],{},"n - 1"," 的任意位置，假设每个位置的概率都相同，都是 ",[218,10458,10459],{},"1\u002Fn",[183,10461,10462],{},"每个出现的概率（即权重）知道了，所以平均时间复杂度为：",[183,10464,10465,10466,10468,10469,10471,10472,10474,10475,10478,10479,1411],{},"“在列表里”的概率是 ",[218,10467,10440],{},"，这一半还要再平分给 ",[218,10470,220],{}," 个位置，所以 ",[218,10473,4292],{}," 落在某个具体位置的概率是 ",[218,10476,10477],{},"1\u002F2 × 1\u002Fn = 1\u002F(2n)","；不在列表里的概率仍然是 ",[218,10480,10440],{},[183,10482,10483,10484,10486,10487,10489,10490,10492],{},"落在第 1 个位置要循环 1 次，第 2 个位置要循环 2 次，一直到第 ",[218,10485,220],{}," 个位置要循环 ",[218,10488,220],{}," 次；不在列表里也要循环 ",[218,10491,220],{}," 次。平均循环次数就是这些情况的加权和：",[10494,10495,10504],"accordion",{":ui":10496,"className":10497},"{\"item\":\"border-b-0\",\"trigger\":\"py-3 text-base font-semibold text-primary\",\"leadingIcon\":\"text-primary\",\"trailingIcon\":\"text-primary\"}",[10498,10499,10500,10501,10502,10503],"my-5","rounded-md","border","border-primary\u002F25","bg-primary\u002F10","px-4",[10505,10506,10511,10514,10517,10537,10548,10555],"accordion-item",{"className":10507,"icon":10509,"label":10510},[10508],"!text-default","i-lucide-scale","什么是加权平均值？",[183,10512,10513],{},"普通平均是每个数权重一样：加起来，再除以个数。加权平均是每个数先乘自己的权重，再相加。权重大的数把结果拉得更近。",[183,10515,10516],{},"三次考试可以看出来：",[193,10518,10519,10525,10531],{},[196,10520,10521,10522],{},"平时 60 分，权重 ",[218,10523,10524],{},"0.2",[196,10526,10527,10528],{},"期中 80 分，权重 ",[218,10529,10530],{},"0.3",[196,10532,10533,10534],{},"期末 90 分，权重 ",[218,10535,10536],{},"0.5",[183,10538,10539,10540,10543,10544,10547],{},"加权平均是 ",[218,10541,10542],{},"60×0.2 + 80×0.3 + 90×0.5 = 81","。普通平均是 ",[218,10545,10546],{},"(60+80+90)\u002F3 ≈ 76.7","。期末占了一半权重，所以 81 更靠近 90，而不是停在三个分数的正中间。",[183,10549,10550,10551,10554],{},"权重必须加起来等于 1（这里 ",[218,10552,10553],{},"0.2 + 0.3 + 0.5 = 1","）。这时加权和本身就是平均值，不用再除一次。",[183,10556,10557,10558,10560,10561,10564,10565,10567,10568,10571],{},"上面公式里，循环次数是要平均的数，出现概率就是权重。",[218,10559,220],{}," 个位置各占 ",[218,10562,10563],{},"1\u002F(2n)","，再加上「不在列表里」的 ",[218,10566,10440],{},"，权重正好加总为 1，所以 ",[218,10569,10570],{},"T(n)"," 直接就是平均循环次数。",[183,10573,10574],{},"平均循环次数是这些情况的加权和：",[183,10576,10577],{},"$$\n\\begin{aligned}\nT(n) &= \\frac{1}{2n} + \\frac{2}{2n} + \\cdots + \\frac{n}{2n} + \\frac{n}{2} \\\n&= \\frac{1 + 2 + \\cdots + n}{2n} + \\frac{n}{2} \\\n&= \\frac{n(n + 1)}{4n} + \\frac{n}{2} \\\n&= \\frac{3n + 1}{4}\n\\end{aligned}\n$$",[183,10579,10580,10581,10584,10585,10588,10589,10592,10593,1411],{},"在 ",[218,10582,10583],{},"(3n + 1) \u002F 4"," 中，系数 ",[218,10586,10587],{},"3\u002F4"," 和常数 ",[218,10590,10591],{},"1\u002F4"," 都不改变增长趋势，所以平均时间复杂度是 ",[218,10594,1503],{},[1445,10596,10598],{"title":10597},"工程中的常用选择","大多数情况下优先关注最坏时间复杂度，因为它能帮助我们评估算法性能的下限。",[179,10600,10601],{"id":10601},"空间复杂度",[183,10603,10604],{},"空间复杂度和时间复杂度一样，关注的是增长趋势；它描述代码运行过程中额外占用的内存空间。",[183,10606,10607],{},"代码在计算机中运行所占用的存储空间主要分为 3 部分：",[193,10609,10610,10613,10616],{},[196,10611,10612],{},"代码本身所占用的",[196,10614,10615],{},"输入数据所占用的",[196,10617,10618],{},"临时变量所占用的",[183,10620,10621],{},"前面两个部分是本身就要占用这些空间，与代码性能无关，所以我们在衡量代码的空间复杂度时，只关心运行过程中临时占用的内存空间。",[183,10623,10624,10625,10628],{},"空间复杂度记作 ",[218,10626,10627],{},"S(n)","，表达形式与时间复杂度一样：",[183,10630,10631],{},"$$\nS(n) = O(f(n))\n$$",[183,10633,10634,10635,10637,10638,10641,10642,10644],{},"这里 ",[218,10636,220],{}," 表示数据集大小，",[218,10639,10640],{},"f(n)"," 表示规模 ",[218,10643,220],{}," 对应的存储空间函数。",[183,10646,10647],{},"我们用下面代码来学习如何分析空间复杂度：",[242,10649,10650,10723,10799,10892,10995],{},[245,10651,10653],{"className":247,"code":10652,"filename":249,"language":250,"meta":251,"style":251},"def dogeggs_sum(lst):\n  sum = 0\n\n  for i in range(len(lst)):\n    sum += lst[i]\n\n  return sum\n",[218,10654,10655,10667,10675,10679,10699,10713,10717],{"__ignoreMap":251},[255,10656,10657,10659,10661,10663,10665],{"class":257,"line":258},[255,10658,262],{"class":261},[255,10660,266],{"class":265},[255,10662,315],{"class":269},[255,10664,9666],{"class":273},[255,10666,276],{"class":269},[255,10668,10669,10671,10673],{"class":257,"line":279},[255,10670,282],{"class":265},[255,10672,285],{"class":269},[255,10674,289],{"class":288},[255,10676,10677],{"class":257,"line":292},[255,10678,389],{"emptyLinePlaceholder":388},[255,10680,10681,10683,10685,10687,10689,10691,10693,10695,10697],{"class":257,"line":299},[255,10682,303],{"class":302},[255,10684,883],{"class":295},[255,10686,309],{"class":302},[255,10688,312],{"class":265},[255,10690,315],{"class":269},[255,10692,8404],{"class":265},[255,10694,315],{"class":269},[255,10696,9666],{"class":265},[255,10698,8411],{"class":269},[255,10700,10701,10703,10705,10707,10709,10711],{"class":257,"line":322},[255,10702,325],{"class":265},[255,10704,328],{"class":269},[255,10706,9716],{"class":295},[255,10708,3187],{"class":269},[255,10710,4510],{"class":295},[255,10712,3193],{"class":269},[255,10714,10715],{"class":257,"line":334},[255,10716,389],{"emptyLinePlaceholder":388},[255,10718,10719,10721],{"class":257,"line":423},[255,10720,337],{"class":302},[255,10722,340],{"class":265},[245,10724,10726],{"className":343,"code":10725,"filename":345,"language":346,"meta":251,"style":251},"fun dogeggs_sum(lst: List\u003CInt>): Int {\n    var sum = 0\n\n    for (i in lst.indices) {\n        sum += lst[i]\n    }\n\n    return sum\n}\n",[218,10727,10728,10748,10758,10762,10772,10781,10785,10789,10795],{"__ignoreMap":251},[255,10729,10730,10732,10734,10736,10738,10740,10742,10744,10746],{"class":257,"line":258},[255,10731,353],{"class":269},[255,10733,266],{"class":265},[255,10735,9767],{"class":295},[255,10737,3309],{"class":361},[255,10739,591],{"class":295},[255,10741,362],{"class":361},[255,10743,4657],{"class":295},[255,10745,362],{"class":361},[255,10747,370],{"class":295},[255,10749,10750,10752,10754,10756],{"class":257,"line":279},[255,10751,375],{"class":269},[255,10753,378],{"class":295},[255,10755,381],{"class":269},[255,10757,289],{"class":288},[255,10759,10760],{"class":257,"line":292},[255,10761,389],{"emptyLinePlaceholder":388},[255,10763,10764,10766,10768,10770],{"class":257,"line":299},[255,10765,394],{"class":302},[255,10767,969],{"class":295},[255,10769,309],{"class":269},[255,10771,9813],{"class":295},[255,10773,10774,10776,10778],{"class":257,"line":322},[255,10775,410],{"class":295},[255,10777,413],{"class":269},[255,10779,10780],{"class":295}," lst[i]\n",[255,10782,10783],{"class":257,"line":334},[255,10784,420],{"class":295},[255,10786,10787],{"class":257,"line":423},[255,10788,389],{"emptyLinePlaceholder":388},[255,10790,10791,10793],{"class":257,"line":431},[255,10792,426],{"class":302},[255,10794,340],{"class":295},[255,10796,10797],{"class":257,"line":1000},[255,10798,434],{"class":295},[245,10800,10802],{"className":437,"code":10801,"filename":439,"language":440,"meta":251,"style":251},"func dogeggs_sum(_ lst: [Int]) -> Int {\n    var sum = 0\n\n    for i in 0..\u003Clst.count {\n        sum += lst[i]\n    }\n\n    return sum\n}\n",[218,10803,10804,10830,10840,10844,10860,10874,10878,10882,10888],{"__ignoreMap":251},[255,10805,10806,10808,10810,10812,10814,10816,10818,10820,10822,10824,10826,10828],{"class":257,"line":258},[255,10807,447],{"class":261},[255,10809,266],{"class":265},[255,10811,315],{"class":269},[255,10813,454],{"class":265},[255,10815,9716],{"class":273},[255,10817,460],{"class":295},[255,10819,3187],{"class":269},[255,10821,362],{"class":361},[255,10823,4071],{"class":269},[255,10825,468],{"class":269},[255,10827,471],{"class":361},[255,10829,370],{"class":269},[255,10831,10832,10834,10836,10838],{"class":257,"line":279},[255,10833,375],{"class":288},[255,10835,378],{"class":295},[255,10837,381],{"class":269},[255,10839,289],{"class":288},[255,10841,10842],{"class":257,"line":292},[255,10843,389],{"emptyLinePlaceholder":388},[255,10845,10846,10848,10850,10852,10854,10856,10858],{"class":257,"line":299},[255,10847,394],{"class":302},[255,10849,883],{"class":295},[255,10851,309],{"class":302},[255,10853,402],{"class":288},[255,10855,500],{"class":269},[255,10857,9934],{"class":295},[255,10859,506],{"class":269},[255,10861,10862,10864,10866,10868,10870,10872],{"class":257,"line":322},[255,10863,410],{"class":295},[255,10865,413],{"class":269},[255,10867,9716],{"class":295},[255,10869,3187],{"class":269},[255,10871,4510],{"class":295},[255,10873,3193],{"class":269},[255,10875,10876],{"class":257,"line":334},[255,10877,420],{"class":269},[255,10879,10880],{"class":257,"line":423},[255,10881,389],{"emptyLinePlaceholder":388},[255,10883,10884,10886],{"class":257,"line":431},[255,10885,426],{"class":302},[255,10887,340],{"class":295},[255,10889,10890],{"class":257,"line":1000},[255,10891,434],{"class":269},[245,10893,10895],{"className":531,"code":10894,"filename":533,"language":534,"meta":251,"style":251},"int dogeggs_sum(List\u003Cint> lst) {\n  var sum = 0;\n\n  for (var i = 0; i \u003C lst.length; i++) {\n    sum += lst[i];\n  }\n\n  return sum;\n}\n",[218,10896,10897,10914,10926,10930,10964,10975,10979,10983,10991],{"__ignoreMap":251},[255,10898,10899,10901,10903,10905,10907,10909,10911],{"class":257,"line":258},[255,10900,541],{"class":361},[255,10902,266],{"class":265},[255,10904,315],{"class":295},[255,10906,3309],{"class":361},[255,10908,591],{"class":295},[255,10910,541],{"class":361},[255,10912,10913],{"class":295},"> lst) {\n",[255,10915,10916,10918,10920,10922,10924],{"class":257,"line":279},[255,10917,555],{"class":261},[255,10919,378],{"class":295},[255,10921,381],{"class":269},[255,10923,402],{"class":288},[255,10925,564],{"class":269},[255,10927,10928],{"class":257,"line":292},[255,10929,389],{"emptyLinePlaceholder":388},[255,10931,10932,10934,10936,10938,10940,10942,10944,10946,10948,10950,10952,10954,10956,10958,10960,10962],{"class":257,"line":299},[255,10933,303],{"class":302},[255,10935,270],{"class":295},[255,10937,577],{"class":261},[255,10939,883],{"class":295},[255,10941,381],{"class":269},[255,10943,402],{"class":288},[255,10945,586],{"class":269},[255,10947,883],{"class":295},[255,10949,591],{"class":269},[255,10951,9716],{"class":295},[255,10953,4533],{"class":269},[255,10955,5585],{"class":295},[255,10957,586],{"class":269},[255,10959,1204],{"class":295},[255,10961,601],{"class":269},[255,10963,604],{"class":295},[255,10965,10966,10968,10970,10973],{"class":257,"line":322},[255,10967,609],{"class":295},[255,10969,413],{"class":269},[255,10971,10972],{"class":295}," lst[i]",[255,10974,564],{"class":269},[255,10976,10977],{"class":257,"line":334},[255,10978,620],{"class":295},[255,10980,10981],{"class":257,"line":423},[255,10982,389],{"emptyLinePlaceholder":388},[255,10984,10985,10987,10989],{"class":257,"line":431},[255,10986,337],{"class":302},[255,10988,627],{"class":295},[255,10990,564],{"class":269},[255,10992,10993],{"class":257,"line":1000},[255,10994,434],{"class":295},[245,10996,10998],{"className":636,"code":10997,"filename":638,"language":639,"meta":251,"style":251},"function dogeggs_sum(lst) {\n  let sum = 0;\n\n  for (let i = 0; i \u003C lst.length; i++) {\n    sum += lst[i];\n  }\n\n  return sum;\n}\n",[218,10999,11000,11014,11026,11030,11066,11082,11086,11090,11098],{"__ignoreMap":251},[255,11001,11002,11004,11006,11008,11010,11012],{"class":257,"line":258},[255,11003,646],{"class":261},[255,11005,266],{"class":265},[255,11007,315],{"class":269},[255,11009,9666],{"class":273},[255,11011,465],{"class":269},[255,11013,370],{"class":269},[255,11015,11016,11018,11020,11022,11024],{"class":257,"line":279},[255,11017,661],{"class":261},[255,11019,627],{"class":295},[255,11021,285],{"class":269},[255,11023,402],{"class":288},[255,11025,564],{"class":269},[255,11027,11028],{"class":257,"line":292},[255,11029,389],{"emptyLinePlaceholder":388},[255,11031,11032,11034,11036,11038,11040,11042,11044,11046,11048,11050,11052,11054,11056,11058,11060,11062,11064],{"class":257,"line":299},[255,11033,303],{"class":302},[255,11035,270],{"class":680},[255,11037,683],{"class":261},[255,11039,1204],{"class":295},[255,11041,285],{"class":269},[255,11043,402],{"class":288},[255,11045,586],{"class":269},[255,11047,1204],{"class":295},[255,11049,696],{"class":269},[255,11051,9716],{"class":295},[255,11053,4533],{"class":269},[255,11055,5585],{"class":295},[255,11057,586],{"class":269},[255,11059,1204],{"class":295},[255,11061,601],{"class":269},[255,11063,707],{"class":680},[255,11065,506],{"class":269},[255,11067,11068,11070,11072,11074,11076,11078,11080],{"class":257,"line":322},[255,11069,325],{"class":295},[255,11071,328],{"class":269},[255,11073,9716],{"class":295},[255,11075,3187],{"class":680},[255,11077,4510],{"class":295},[255,11079,3258],{"class":680},[255,11081,564],{"class":269},[255,11083,11084],{"class":257,"line":334},[255,11085,620],{"class":269},[255,11087,11088],{"class":257,"line":423},[255,11089,389],{"emptyLinePlaceholder":388},[255,11091,11092,11094,11096],{"class":257,"line":431},[255,11093,337],{"class":302},[255,11095,627],{"class":295},[255,11097,564],{"class":269},[255,11099,11100],{"class":257,"line":1000},[255,11101,434],{"class":269},[183,11103,11104,11105,11107],{},"上述代码用于求列表 ",[218,11106,9666],{}," 的所有元素之和。根据前面的约定，这里只计算临时变量占用的额外空间。",[183,11109,11110,11111,11113,11114,819,11117,11119,11120,11122,11123,1411],{},"形参 ",[218,11112,9666],{}," 所占用的空间不计，那么剩下的临时变量只有 ",[218,11115,11116],{},"sum",[218,11118,4510],{},"。它们都是常数阶，与规模 ",[218,11121,220],{}," 无关，因此整段代码的空间复杂度是 ",[218,11124,11125],{},"S(n) = O(1)",[768,11127,11128],{"id":11128},"常见空间复杂度",[183,11130,11131],{},"常见的空间复杂度和时间复杂度类似，也可以按照增长速度从小到大排列：",[183,11133,11134,3125,11136,3125,11138,3125,11140],{},[218,11135,2998],{},[218,11137,3014],{},[218,11139,1503],{},[218,11141,1531],{},[213,11143,11145,11146,11149],{"title":11144},"额外空间与总空间","除非题目特别说明，算法题里说的空间复杂度通常指",[199,11147,11148],{},"额外空间复杂度","，也就是不计算输入数据本身所占的空间。是否计算返回结果，要看题目讨论的是辅助空间还是总空间。",[1455,11151,11152,11166],{},[1458,11153,11154],{},[1461,11155,11156,11158,11160,11163],{},[1464,11157,2980],{},[1464,11159,2983],{},[1464,11161,11162],{},"典型情况",[1464,11164,11165],{},"文章中的例子",[1489,11167,11168,11186,11204,11224],{},[1461,11169,11170,11174,11177,11183],{},[1494,11171,11172],{},[218,11173,2998],{},[1494,11175,11176],{},"常数空间",[1494,11178,11179,11180,11182],{},"只使用固定数量的变量，额外空间不随 ",[218,11181,220],{}," 增长",[1494,11184,11185],{},"求和、原地冒泡排序",[1461,11187,11188,11192,11195,11201],{},[1494,11189,11190],{},[218,11191,3014],{},[1494,11193,11194],{},"对数空间",[1494,11196,11197,11198],{},"递归调用每次把问题规模缩小一半，调用栈深度是 ",[218,11199,11200],{},"log n",[1494,11202,11203],{},"归并排序的递归调用栈",[1461,11205,11206,11210,11213,11219],{},[1494,11207,11208],{},[218,11209,1503],{},[1494,11211,11212],{},"线性空间",[1494,11214,11215,11216,11218],{},"临时数组、递归调用栈或辅助结构的大小和 ",[218,11217,220],{}," 成正比",[1494,11220,11221,11222],{},"归并排序的临时数组、全排列的 ",[218,11223,8355],{},[1461,11225,11226,11230,11233,11240],{},[1494,11227,11228],{},[218,11229,1531],{},[1494,11231,11232],{},"平方空间",[1494,11234,11235,11236,11239],{},"需要保存 ",[218,11237,11238],{},"n × n"," 规模的表格或结果",[1494,11241,11242],{},"矩阵乘法的结果矩阵",[183,11244,11245],{},"下面分别看这些空间复杂度是怎么产生的。",[3144,11247,11249,11251],{"id":11248},"o1-常数空间只保存固定数量的变量",[218,11250,2998],{}," 常数空间：只保存固定数量的变量",[183,11253,11254,11255,11258,11259,819,11261,11263,11264,11266,11267,1411],{},"前面的 ",[218,11256,11257],{},"dogeggs_sum(lst)"," 只使用了 ",[218,11260,11116],{},[218,11262,4510],{}," 两个临时变量。无论列表里有 10 个元素还是 1000 万个元素，这两个变量占用的空间都不会随 ",[218,11265,220],{}," 增长，所以空间复杂度是 ",[218,11268,2998],{},[183,11270,11271,11272,11274,11275,786,11277,786,11279,11281,11282,11285,11286,11288,11289,1411],{},"前面的冒泡排序也是 ",[218,11273,2998],{}," 额外空间：它只使用了 ",[218,11276,220],{},[218,11278,4510],{},[218,11280,4522],{}," 和交换时的 ",[218,11283,11284],{},"tmp","。虽然时间复杂度是 ",[218,11287,1531],{},"，但它直接在原数组上交换元素，没有另建一个和 n 一样大的数组，所以空间复杂度仍然是 ",[218,11290,2998],{},[183,11292,11293],{},"这里要注意“输入数据所占用的空间”和“额外空间”的区别。冒泡排序输入的数组本身可能有 n 个元素，但那是调用者已经提供的输入空间，通常不计入这段算法的额外空间复杂度。",[3144,11295,11297,11299],{"id":11296},"olog-n-对数空间递归调用栈",[218,11298,3014],{}," 对数空间：递归调用栈",[183,11301,11302],{},"归并排序每次把数组分成两半。虽然递归调用总共会处理 n 个元素，但沿着其中一条递归路径，规模是：",[183,11304,11305],{},[218,11306,11307],{},"n → n \u002F 2 → n \u002F 4 → ... → 1",[183,11309,11310,11311,11313,11314,1411],{},"因此递归深度是 ",[218,11312,3014],{},"。如果只计算递归调用栈，不计算合并时创建的临时数组，那么归并排序的栈空间是 ",[218,11315,3014],{},[183,11317,11318,11319,11321,11322,1411],{},"下面这个函数每次把 n 除以 2，直到 n 不大于 1。它没有创建和 n 相关的数组，但递归调用栈最多有 ",[218,11320,11200],{}," 层，所以额外空间复杂度是 ",[218,11323,3014],{},[242,11325,11326,11383,11442,11513,11572],{},[245,11327,11329],{"className":247,"code":11328,"filename":249,"language":250,"meta":251,"style":251},"def halve_count(n):\n  if n \u003C= 1:\n    return 1\n  return 1 + halve_count(n \u002F\u002F 2)\n",[218,11330,11331,11344,11356,11362],{"__ignoreMap":251},[255,11332,11333,11335,11338,11340,11342],{"class":257,"line":258},[255,11334,262],{"class":261},[255,11336,11337],{"class":265}," halve_count",[255,11339,315],{"class":269},[255,11341,220],{"class":273},[255,11343,276],{"class":269},[255,11345,11346,11348,11350,11352,11354],{"class":257,"line":279},[255,11347,4356],{"class":302},[255,11349,3611],{"class":295},[255,11351,4676],{"class":269},[255,11353,3424],{"class":288},[255,11355,3934],{"class":269},[255,11357,11358,11360],{"class":257,"line":292},[255,11359,426],{"class":302},[255,11361,4556],{"class":288},[255,11363,11364,11366,11368,11370,11372,11374,11376,11379,11381],{"class":257,"line":299},[255,11365,337],{"class":302},[255,11367,3424],{"class":288},[255,11369,2944],{"class":269},[255,11371,11337],{"class":265},[255,11373,315],{"class":269},[255,11375,503],{"class":265},[255,11377,11378],{"class":269},"\u002F\u002F",[255,11380,3463],{"class":288},[255,11382,5946],{"class":269},[245,11384,11386],{"className":343,"code":11385,"filename":345,"language":346,"meta":251,"style":251},"fun halve_count(n: Int): Int {\n    if (n \u003C= 1) return 1\n    return 1 + halve_count(n \u002F 2)\n}\n",[218,11387,11388,11404,11420,11438],{"__ignoreMap":251},[255,11389,11390,11392,11394,11396,11398,11400,11402],{"class":257,"line":258},[255,11391,353],{"class":269},[255,11393,11337],{"class":265},[255,11395,358],{"class":295},[255,11397,362],{"class":361},[255,11399,365],{"class":295},[255,11401,362],{"class":361},[255,11403,370],{"class":295},[255,11405,11406,11408,11410,11412,11414,11416,11418],{"class":257,"line":279},[255,11407,3939],{"class":302},[255,11409,8000],{"class":295},[255,11411,4676],{"class":269},[255,11413,3424],{"class":288},[255,11415,707],{"class":295},[255,11417,4683],{"class":302},[255,11419,4556],{"class":288},[255,11421,11422,11424,11426,11428,11430,11432,11434,11436],{"class":257,"line":292},[255,11423,426],{"class":302},[255,11425,3424],{"class":288},[255,11427,2944],{"class":269},[255,11429,11337],{"class":265},[255,11431,8019],{"class":295},[255,11433,4701],{"class":269},[255,11435,3463],{"class":288},[255,11437,5946],{"class":295},[255,11439,11440],{"class":257,"line":299},[255,11441,434],{"class":295},[245,11443,11445],{"className":437,"code":11444,"filename":439,"language":440,"meta":251,"style":251},"func halve_count(_ n: Int) -> Int {\n    if n \u003C= 1 { return 1 }\n    return 1 + halve_count(n \u002F 2)\n}\n",[218,11446,11447,11471,11489,11509],{"__ignoreMap":251},[255,11448,11449,11451,11453,11455,11457,11459,11461,11463,11465,11467,11469],{"class":257,"line":258},[255,11450,447],{"class":261},[255,11452,11337],{"class":265},[255,11454,315],{"class":269},[255,11456,454],{"class":265},[255,11458,457],{"class":273},[255,11460,460],{"class":295},[255,11462,362],{"class":361},[255,11464,465],{"class":269},[255,11466,468],{"class":269},[255,11468,471],{"class":361},[255,11470,370],{"class":269},[255,11472,11473,11475,11477,11479,11481,11483,11485,11487],{"class":257,"line":279},[255,11474,3939],{"class":302},[255,11476,3611],{"class":295},[255,11478,4676],{"class":269},[255,11480,3424],{"class":288},[255,11482,4960],{"class":269},[255,11484,4963],{"class":302},[255,11486,3424],{"class":288},[255,11488,8933],{"class":269},[255,11490,11491,11493,11495,11497,11499,11501,11503,11505,11507],{"class":257,"line":292},[255,11492,426],{"class":302},[255,11494,3424],{"class":288},[255,11496,2944],{"class":269},[255,11498,11337],{"class":265},[255,11500,315],{"class":269},[255,11502,503],{"class":295},[255,11504,4701],{"class":269},[255,11506,3463],{"class":288},[255,11508,5946],{"class":269},[255,11510,11511],{"class":257,"line":299},[255,11512,434],{"class":269},[245,11514,11516],{"className":531,"code":11515,"filename":533,"language":534,"meta":251,"style":251},"int halve_count(int n) {\n  if (n \u003C= 1) return 1;\n  return 1 + halve_count(n ~\u002F 2);\n}\n",[218,11517,11518,11530,11548,11568],{"__ignoreMap":251},[255,11519,11520,11522,11524,11526,11528],{"class":257,"line":258},[255,11521,541],{"class":361},[255,11523,11337],{"class":265},[255,11525,315],{"class":295},[255,11527,541],{"class":361},[255,11529,550],{"class":295},[255,11531,11532,11534,11536,11538,11540,11542,11544,11546],{"class":257,"line":279},[255,11533,4356],{"class":302},[255,11535,8000],{"class":295},[255,11537,4676],{"class":269},[255,11539,3424],{"class":288},[255,11541,707],{"class":295},[255,11543,4683],{"class":302},[255,11545,3424],{"class":288},[255,11547,564],{"class":269},[255,11549,11550,11552,11554,11556,11558,11560,11562,11564,11566],{"class":257,"line":292},[255,11551,337],{"class":302},[255,11553,3424],{"class":288},[255,11555,2944],{"class":269},[255,11557,11337],{"class":265},[255,11559,8019],{"class":295},[255,11561,5308],{"class":269},[255,11563,3463],{"class":288},[255,11565,465],{"class":295},[255,11567,564],{"class":269},[255,11569,11570],{"class":257,"line":299},[255,11571,434],{"class":295},[245,11573,11575],{"className":636,"code":11574,"filename":638,"language":639,"meta":251,"style":251},"function halve_count(n) {\n  if (n \u003C= 1) return 1;\n  return 1 + halve_count(Math.floor(n \u002F 2));\n}\n",[218,11576,11577,11591,11611,11642],{"__ignoreMap":251},[255,11578,11579,11581,11583,11585,11587,11589],{"class":257,"line":258},[255,11580,646],{"class":261},[255,11582,11337],{"class":265},[255,11584,315],{"class":269},[255,11586,220],{"class":273},[255,11588,465],{"class":269},[255,11590,370],{"class":269},[255,11592,11593,11595,11597,11599,11601,11603,11605,11607,11609],{"class":257,"line":279},[255,11594,4356],{"class":302},[255,11596,270],{"class":680},[255,11598,220],{"class":295},[255,11600,4368],{"class":269},[255,11602,3424],{"class":288},[255,11604,707],{"class":680},[255,11606,4683],{"class":302},[255,11608,3424],{"class":288},[255,11610,564],{"class":269},[255,11612,11613,11615,11617,11619,11621,11623,11626,11628,11630,11632,11634,11636,11638,11640],{"class":257,"line":292},[255,11614,337],{"class":302},[255,11616,3424],{"class":288},[255,11618,2944],{"class":269},[255,11620,11337],{"class":265},[255,11622,315],{"class":680},[255,11624,11625],{"class":295},"Math",[255,11627,4533],{"class":269},[255,11629,5615],{"class":265},[255,11631,315],{"class":680},[255,11633,220],{"class":295},[255,11635,5626],{"class":269},[255,11637,3463],{"class":288},[255,11639,5662],{"class":680},[255,11641,564],{"class":269},[255,11643,11644],{"class":257,"line":299},[255,11645,434],{"class":269},[183,11647,11648,11649,786,11651,819,11653,11656,11657,11659,11660,11662,11663,1411],{},"不过，文章中的归并排序实现还会创建 ",[218,11650,4480],{},[218,11652,4496],{},[218,11654,11655],{},"merged"," 等数组。它们在同一层合计最多保存 ",[218,11658,1503],{}," 个元素，所以整个实现的额外空间复杂度应记为 ",[218,11661,1503],{},"，而不是只看递归栈写成 ",[218,11664,3014],{},[3144,11666,11668,11670],{"id":11667},"on-线性空间辅助数组或线性递归",[218,11669,1503],{}," 线性空间：辅助数组或线性递归",[183,11672,11673,11674,11677,11678,11680,11681,1411],{},"参考下面的代码，",[218,11675,11676],{},"result"," 每循环一次就多保存一个元素，最多保存 ",[218,11679,220],{}," 个元素，因此额外空间复杂度是 ",[218,11682,1503],{},[242,11684,11685,11748,11825,11916,12017],{},[245,11686,11688],{"className":247,"code":11687,"filename":249,"language":250,"meta":251,"style":251},"def create_list(n):\n  result = []\n  for i in range(n):\n    result.append(i)\n  return result\n",[218,11689,11690,11703,11711,11727,11742],{"__ignoreMap":251},[255,11691,11692,11694,11697,11699,11701],{"class":257,"line":258},[255,11693,262],{"class":261},[255,11695,11696],{"class":265}," create_list",[255,11698,315],{"class":269},[255,11700,220],{"class":273},[255,11702,276],{"class":269},[255,11704,11705,11707,11709],{"class":257,"line":279},[255,11706,8296],{"class":295},[255,11708,381],{"class":269},[255,11710,4452],{"class":269},[255,11712,11713,11715,11717,11719,11721,11723,11725],{"class":257,"line":292},[255,11714,303],{"class":302},[255,11716,883],{"class":295},[255,11718,309],{"class":302},[255,11720,312],{"class":265},[255,11722,315],{"class":269},[255,11724,220],{"class":265},[255,11726,276],{"class":269},[255,11728,11729,11732,11734,11736,11738,11740],{"class":257,"line":299},[255,11730,11731],{"class":295},"    result",[255,11733,4533],{"class":269},[255,11735,4536],{"class":265},[255,11737,315],{"class":269},[255,11739,4510],{"class":265},[255,11741,5946],{"class":269},[255,11743,11744,11746],{"class":257,"line":322},[255,11745,337],{"class":302},[255,11747,8516],{"class":295},[245,11749,11751],{"className":343,"code":11750,"filename":345,"language":346,"meta":251,"style":251},"fun create_list(n: Int): List\u003CInt> {\n    val result = mutableListOf\u003CInt>()\n    for (i in 0 until n) {\n        result.add(i)\n    }\n    return result\n}\n",[218,11752,11753,11773,11789,11801,11811,11815,11821],{"__ignoreMap":251},[255,11754,11755,11757,11759,11761,11763,11765,11767,11769,11771],{"class":257,"line":258},[255,11756,353],{"class":269},[255,11758,11696],{"class":265},[255,11760,358],{"class":295},[255,11762,362],{"class":361},[255,11764,365],{"class":295},[255,11766,3309],{"class":361},[255,11768,591],{"class":295},[255,11770,362],{"class":361},[255,11772,4666],{"class":295},[255,11774,11775,11777,11779,11781,11783,11785,11787],{"class":257,"line":279},[255,11776,4690],{"class":269},[255,11778,8552],{"class":295},[255,11780,381],{"class":269},[255,11782,4757],{"class":265},[255,11784,591],{"class":295},[255,11786,362],{"class":361},[255,11788,4764],{"class":295},[255,11790,11791,11793,11795,11797,11799],{"class":257,"line":292},[255,11792,394],{"class":302},[255,11794,969],{"class":295},[255,11796,309],{"class":269},[255,11798,402],{"class":288},[255,11800,405],{"class":295},[255,11802,11803,11806,11808],{"class":257,"line":299},[255,11804,11805],{"class":295},"        result.",[255,11807,4825],{"class":265},[255,11809,11810],{"class":295},"(i)\n",[255,11812,11813],{"class":257,"line":322},[255,11814,420],{"class":295},[255,11816,11817,11819],{"class":257,"line":334},[255,11818,426],{"class":302},[255,11820,8516],{"class":295},[255,11822,11823],{"class":257,"line":423},[255,11824,434],{"class":295},[245,11826,11828],{"className":437,"code":11827,"filename":439,"language":440,"meta":251,"style":251},"func create_list(_ n: Int) -> [Int] {\n    var result: [Int] = []\n    for i in 0..\u003Cn {\n        result.append(i)\n    }\n    return result\n}\n",[218,11829,11830,11858,11874,11890,11902,11906,11912],{"__ignoreMap":251},[255,11831,11832,11834,11836,11838,11840,11842,11844,11846,11848,11850,11852,11854,11856],{"class":257,"line":258},[255,11833,447],{"class":261},[255,11835,11696],{"class":265},[255,11837,315],{"class":269},[255,11839,454],{"class":265},[255,11841,457],{"class":273},[255,11843,460],{"class":295},[255,11845,362],{"class":361},[255,11847,465],{"class":269},[255,11849,468],{"class":269},[255,11851,4940],{"class":269},[255,11853,362],{"class":361},[255,11855,3258],{"class":269},[255,11857,370],{"class":269},[255,11859,11860,11862,11864,11866,11868,11870,11872],{"class":257,"line":279},[255,11861,375],{"class":288},[255,11863,8790],{"class":295},[255,11865,3187],{"class":269},[255,11867,362],{"class":361},[255,11869,3258],{"class":269},[255,11871,285],{"class":269},[255,11873,4452],{"class":295},[255,11875,11876,11878,11880,11882,11884,11886,11888],{"class":257,"line":292},[255,11877,394],{"class":302},[255,11879,883],{"class":295},[255,11881,309],{"class":302},[255,11883,402],{"class":288},[255,11885,500],{"class":269},[255,11887,503],{"class":295},[255,11889,506],{"class":269},[255,11891,11892,11894,11896,11898,11900],{"class":257,"line":299},[255,11893,11805],{"class":295},[255,11895,4536],{"class":265},[255,11897,315],{"class":269},[255,11899,4510],{"class":295},[255,11901,5946],{"class":269},[255,11903,11904],{"class":257,"line":322},[255,11905,420],{"class":269},[255,11907,11908,11910],{"class":257,"line":334},[255,11909,426],{"class":302},[255,11911,8516],{"class":295},[255,11913,11914],{"class":257,"line":423},[255,11915,434],{"class":269},[245,11917,11919],{"className":531,"code":11918,"filename":533,"language":534,"meta":251,"style":251},"List\u003Cint> create_list(int n) {\n  final result = \u003Cint>[];\n  for (var i = 0; i \u003C n; i++) {\n    result.add(i);\n  }\n  return result;\n}\n",[218,11920,11921,11940,11958,11988,12001,12005,12013],{"__ignoreMap":251},[255,11922,11923,11925,11927,11929,11931,11934,11936,11938],{"class":257,"line":258},[255,11924,3309],{"class":361},[255,11926,591],{"class":295},[255,11928,541],{"class":361},[255,11930,5253],{"class":295},[255,11932,11933],{"class":265},"create_list",[255,11935,315],{"class":295},[255,11937,541],{"class":361},[255,11939,550],{"class":295},[255,11941,11942,11944,11946,11948,11950,11952,11954,11956],{"class":257,"line":279},[255,11943,5295],{"class":261},[255,11945,8552],{"class":295},[255,11947,381],{"class":269},[255,11949,696],{"class":269},[255,11951,541],{"class":361},[255,11953,3944],{"class":269},[255,11955,5379],{"class":295},[255,11957,564],{"class":269},[255,11959,11960,11962,11964,11966,11968,11970,11972,11974,11976,11978,11980,11982,11984,11986],{"class":257,"line":292},[255,11961,303],{"class":302},[255,11963,270],{"class":295},[255,11965,577],{"class":261},[255,11967,883],{"class":295},[255,11969,381],{"class":269},[255,11971,402],{"class":288},[255,11973,586],{"class":269},[255,11975,883],{"class":295},[255,11977,591],{"class":269},[255,11979,457],{"class":295},[255,11981,586],{"class":269},[255,11983,1204],{"class":295},[255,11985,601],{"class":269},[255,11987,604],{"class":295},[255,11989,11990,11992,11994,11996,11999],{"class":257,"line":299},[255,11991,11731],{"class":295},[255,11993,4533],{"class":269},[255,11995,4825],{"class":265},[255,11997,11998],{"class":295},"(i)",[255,12000,564],{"class":269},[255,12002,12003],{"class":257,"line":322},[255,12004,620],{"class":295},[255,12006,12007,12009,12011],{"class":257,"line":334},[255,12008,337],{"class":302},[255,12010,9324],{"class":295},[255,12012,564],{"class":269},[255,12014,12015],{"class":257,"line":423},[255,12016,434],{"class":295},[245,12018,12020],{"className":636,"code":12019,"filename":638,"language":639,"meta":251,"style":251},"function create_list(n) {\n  const result = [];\n  for (let i = 0; i \u003C n; i++) {\n    result.push(i);\n  }\n  return result;\n}\n",[218,12021,12022,12036,12048,12080,12096,12100,12108],{"__ignoreMap":251},[255,12023,12024,12026,12028,12030,12032,12034],{"class":257,"line":258},[255,12025,646],{"class":261},[255,12027,11696],{"class":265},[255,12029,315],{"class":269},[255,12031,220],{"class":273},[255,12033,465],{"class":269},[255,12035,370],{"class":269},[255,12037,12038,12040,12042,12044,12046],{"class":257,"line":279},[255,12039,5602],{"class":261},[255,12041,9324],{"class":295},[255,12043,285],{"class":269},[255,12045,5701],{"class":680},[255,12047,564],{"class":269},[255,12049,12050,12052,12054,12056,12058,12060,12062,12064,12066,12068,12070,12072,12074,12076,12078],{"class":257,"line":292},[255,12051,303],{"class":302},[255,12053,270],{"class":680},[255,12055,683],{"class":261},[255,12057,1204],{"class":295},[255,12059,285],{"class":269},[255,12061,402],{"class":288},[255,12063,586],{"class":269},[255,12065,1204],{"class":295},[255,12067,696],{"class":269},[255,12069,457],{"class":295},[255,12071,586],{"class":269},[255,12073,1204],{"class":295},[255,12075,601],{"class":269},[255,12077,707],{"class":680},[255,12079,506],{"class":269},[255,12081,12082,12084,12086,12088,12090,12092,12094],{"class":257,"line":299},[255,12083,11731],{"class":295},[255,12085,4533],{"class":269},[255,12087,5797],{"class":265},[255,12089,315],{"class":680},[255,12091,4510],{"class":295},[255,12093,465],{"class":680},[255,12095,564],{"class":269},[255,12097,12098],{"class":257,"line":322},[255,12099,620],{"class":269},[255,12101,12102,12104,12106],{"class":257,"line":334},[255,12103,337],{"class":302},[255,12105,9324],{"class":295},[255,12107,564],{"class":269},[255,12109,12110],{"class":257,"line":423},[255,12111,434],{"class":269},[183,12113,12114,12115,12117,12118,12120],{},"文章中的归并排序需要一个和输入规模相近的 ",[218,12116,11655],{}," 数组，因此额外空间是 ",[218,12119,1503],{},"。这也是归并排序和原地排序的一个重要区别：它用更多空间换取了稳定且规整的排序过程。",[183,12122,12123],{},"前面的全排列代码也会使用线性空间保存当前状态：",[193,12125,12126,12136,12146],{},[196,12127,12128,12130,12131,12133,12134,1411],{},[218,12129,9523],{}," 数组需要保存 ",[218,12132,220],{}," 个布尔值，是 ",[218,12135,1503],{},[196,12137,12138,12140,12141,12143,12144,1411],{},[218,12139,8355],{}," 最深时保存 ",[218,12142,220],{}," 个元素，是 ",[218,12145,1503],{},[196,12147,12148,12149,12151,12152,1411],{},"递归调用栈最多有 ",[218,12150,220],{}," 层，是 ",[218,12153,1503],{},[183,12155,12156,12157,12159,12160,12162,12163,12166,12167,12169,12170,12173],{},"所以，如果不把最终返回的 ",[218,12158,11676],{}," 计算在内，全排列的辅助空间复杂度是 ",[218,12161,1503],{},"。但是这段代码会把所有排列都保存下来，结果本身有 ",[218,12164,12165],{},"n!"," 个排列，每个排列长度为 ",[218,12168,220],{},"，因此返回结果占用的空间是 ",[218,12171,12172],{},"O(n × n!)","。是否把输出结果计入空间复杂度，要看题目讨论的是“辅助空间”还是“总空间”。",[183,12175,12176,12177,12179,12180,12182,12183,12185],{},"朴素递归斐波那契也是一个容易混淆的例子。它的时间复杂度接近 ",[218,12178,3092],{},"，但同一时刻沿着一条递归路径最多只有 ",[218,12181,220],{}," 层调用，所以调用栈空间是 ",[218,12184,1503],{},"。时间增长很快，并不代表空间也一定是指数增长。",[3144,12187,12189,12191],{"id":12188},"on-平方空间保存二维数据",[218,12190,1531],{}," 平方空间：保存二维数据",[183,12193,12194,12195,12197,12198,12200,12201,12203,12204,12206,12207,1411],{},"下面的代码先创建 ",[218,12196,220],{}," 个一维列表，再让每个列表保存 ",[218,12199,220],{}," 个元素。最终得到的是一个 ",[218,12202,11238],{}," 的二维列表，需要保存 ",[218,12205,1399],{}," 个元素，所以空间复杂度是 ",[218,12208,1531],{},[242,12210,12211,12317,12447,12589,12767],{},[245,12212,12214],{"className":247,"code":12213,"filename":249,"language":250,"meta":251,"style":251},"def create_matrix(n):\n  matrix = []\n  for i in range(n):\n    row = []\n    for j in range(n):\n      row.append(j)\n    matrix.append(row)\n  return matrix\n",[218,12215,12216,12229,12238,12254,12263,12279,12294,12310],{"__ignoreMap":251},[255,12217,12218,12220,12223,12225,12227],{"class":257,"line":258},[255,12219,262],{"class":261},[255,12221,12222],{"class":265}," create_matrix",[255,12224,315],{"class":269},[255,12226,220],{"class":273},[255,12228,276],{"class":269},[255,12230,12231,12234,12236],{"class":257,"line":279},[255,12232,12233],{"class":295},"  matrix ",[255,12235,381],{"class":269},[255,12237,4452],{"class":269},[255,12239,12240,12242,12244,12246,12248,12250,12252],{"class":257,"line":292},[255,12241,303],{"class":302},[255,12243,883],{"class":295},[255,12245,309],{"class":302},[255,12247,312],{"class":265},[255,12249,315],{"class":269},[255,12251,220],{"class":265},[255,12253,276],{"class":269},[255,12255,12256,12259,12261],{"class":257,"line":299},[255,12257,12258],{"class":295},"    row ",[255,12260,381],{"class":269},[255,12262,4452],{"class":269},[255,12264,12265,12267,12269,12271,12273,12275,12277],{"class":257,"line":322},[255,12266,394],{"class":302},[255,12268,1741],{"class":295},[255,12270,309],{"class":302},[255,12272,312],{"class":265},[255,12274,315],{"class":269},[255,12276,220],{"class":265},[255,12278,276],{"class":269},[255,12280,12281,12284,12286,12288,12290,12292],{"class":257,"line":334},[255,12282,12283],{"class":295},"      row",[255,12285,4533],{"class":269},[255,12287,4536],{"class":265},[255,12289,315],{"class":269},[255,12291,4522],{"class":265},[255,12293,5946],{"class":269},[255,12295,12296,12299,12301,12303,12305,12308],{"class":257,"line":423},[255,12297,12298],{"class":295},"    matrix",[255,12300,4533],{"class":269},[255,12302,4536],{"class":265},[255,12304,315],{"class":269},[255,12306,12307],{"class":265},"row",[255,12309,5946],{"class":269},[255,12311,12312,12314],{"class":257,"line":431},[255,12313,337],{"class":302},[255,12315,12316],{"class":295}," matrix\n",[245,12318,12320],{"className":343,"code":12319,"filename":345,"language":346,"meta":251,"style":251},"fun create_matrix(n: Int): List\u003CList\u003CInt>> {\n    val matrix = mutableListOf\u003CList\u003CInt>>()\n    for (i in 0 until n) {\n        val row = mutableListOf\u003CInt>()\n        for (j in 0 until n) {\n            row.add(j)\n        }\n        matrix.add(row)\n    }\n    return matrix\n}\n",[218,12321,12322,12346,12367,12379,12397,12409,12419,12423,12433,12437,12443],{"__ignoreMap":251},[255,12323,12324,12326,12328,12330,12332,12334,12336,12338,12340,12342,12344],{"class":257,"line":258},[255,12325,353],{"class":269},[255,12327,12222],{"class":265},[255,12329,358],{"class":295},[255,12331,362],{"class":361},[255,12333,365],{"class":295},[255,12335,3309],{"class":361},[255,12337,591],{"class":295},[255,12339,3309],{"class":361},[255,12341,591],{"class":295},[255,12343,362],{"class":361},[255,12345,7051],{"class":295},[255,12347,12348,12350,12353,12355,12357,12359,12361,12363,12365],{"class":257,"line":279},[255,12349,4690],{"class":269},[255,12351,12352],{"class":295}," matrix ",[255,12354,381],{"class":269},[255,12356,4757],{"class":265},[255,12358,591],{"class":295},[255,12360,3309],{"class":361},[255,12362,591],{"class":295},[255,12364,362],{"class":361},[255,12366,8567],{"class":295},[255,12368,12369,12371,12373,12375,12377],{"class":257,"line":292},[255,12370,394],{"class":302},[255,12372,969],{"class":295},[255,12374,309],{"class":269},[255,12376,402],{"class":288},[255,12378,405],{"class":295},[255,12380,12381,12384,12387,12389,12391,12393,12395],{"class":257,"line":299},[255,12382,12383],{"class":269},"        val",[255,12385,12386],{"class":295}," row ",[255,12388,381],{"class":269},[255,12390,4757],{"class":265},[255,12392,591],{"class":295},[255,12394,362],{"class":361},[255,12396,4764],{"class":295},[255,12398,12399,12401,12403,12405,12407],{"class":257,"line":322},[255,12400,966],{"class":302},[255,12402,1956],{"class":295},[255,12404,309],{"class":269},[255,12406,402],{"class":288},[255,12408,405],{"class":295},[255,12410,12411,12414,12416],{"class":257,"line":334},[255,12412,12413],{"class":295},"            row.",[255,12415,4825],{"class":265},[255,12417,12418],{"class":295},"(j)\n",[255,12420,12421],{"class":257,"line":423},[255,12422,993],{"class":295},[255,12424,12425,12428,12430],{"class":257,"line":431},[255,12426,12427],{"class":295},"        matrix.",[255,12429,4825],{"class":265},[255,12431,12432],{"class":295},"(row)\n",[255,12434,12435],{"class":257,"line":1000},[255,12436,420],{"class":295},[255,12438,12439,12441],{"class":257,"line":1007},[255,12440,426],{"class":302},[255,12442,12316],{"class":295},[255,12444,12445],{"class":257,"line":1690},[255,12446,434],{"class":295},[245,12448,12450],{"className":437,"code":12449,"filename":439,"language":440,"meta":251,"style":251},"func create_matrix(_ n: Int) -> [[Int]] {\n    var matrix: [[Int]] = []\n    for _ in 0..\u003Cn {\n        var row: [Int] = []\n        for j in 0..\u003Cn {\n            row.append(j)\n        }\n        matrix.append(row)\n    }\n    return matrix\n}\n",[218,12451,12452,12480,12497,12513,12531,12547,12559,12563,12575,12579,12585],{"__ignoreMap":251},[255,12453,12454,12456,12458,12460,12462,12464,12466,12468,12470,12472,12474,12476,12478],{"class":257,"line":258},[255,12455,447],{"class":261},[255,12457,12222],{"class":265},[255,12459,315],{"class":269},[255,12461,454],{"class":265},[255,12463,457],{"class":273},[255,12465,460],{"class":295},[255,12467,362],{"class":361},[255,12469,465],{"class":269},[255,12471,468],{"class":269},[255,12473,6872],{"class":269},[255,12475,362],{"class":361},[255,12477,7188],{"class":269},[255,12479,370],{"class":269},[255,12481,12482,12484,12487,12489,12491,12493,12495],{"class":257,"line":279},[255,12483,375],{"class":288},[255,12485,12486],{"class":295}," matrix: ",[255,12488,7183],{"class":269},[255,12490,362],{"class":361},[255,12492,7188],{"class":269},[255,12494,285],{"class":269},[255,12496,4452],{"class":295},[255,12498,12499,12501,12503,12505,12507,12509,12511],{"class":257,"line":292},[255,12500,394],{"class":302},[255,12502,6886],{"class":295},[255,12504,309],{"class":302},[255,12506,402],{"class":288},[255,12508,500],{"class":269},[255,12510,503],{"class":295},[255,12512,506],{"class":269},[255,12514,12515,12518,12521,12523,12525,12527,12529],{"class":257,"line":299},[255,12516,12517],{"class":288},"        var",[255,12519,12520],{"class":295}," row: ",[255,12522,3187],{"class":269},[255,12524,362],{"class":361},[255,12526,3258],{"class":269},[255,12528,285],{"class":269},[255,12530,4452],{"class":295},[255,12532,12533,12535,12537,12539,12541,12543,12545],{"class":257,"line":322},[255,12534,966],{"class":302},[255,12536,1741],{"class":295},[255,12538,309],{"class":302},[255,12540,402],{"class":288},[255,12542,500],{"class":269},[255,12544,503],{"class":295},[255,12546,506],{"class":269},[255,12548,12549,12551,12553,12555,12557],{"class":257,"line":334},[255,12550,12413],{"class":295},[255,12552,4536],{"class":265},[255,12554,315],{"class":269},[255,12556,4522],{"class":295},[255,12558,5946],{"class":269},[255,12560,12561],{"class":257,"line":423},[255,12562,993],{"class":269},[255,12564,12565,12567,12569,12571,12573],{"class":257,"line":431},[255,12566,12427],{"class":295},[255,12568,4536],{"class":265},[255,12570,315],{"class":269},[255,12572,12307],{"class":295},[255,12574,5946],{"class":269},[255,12576,12577],{"class":257,"line":1000},[255,12578,420],{"class":269},[255,12580,12581,12583],{"class":257,"line":1007},[255,12582,426],{"class":302},[255,12584,12316],{"class":295},[255,12586,12587],{"class":257,"line":1690},[255,12588,434],{"class":269},[245,12590,12592],{"className":531,"code":12591,"filename":533,"language":534,"meta":251,"style":251},"List\u003CList\u003Cint>> create_matrix(int n) {\n  final matrix = \u003CList\u003Cint>>[];\n  for (var i = 0; i \u003C n; i++) {\n    final row = \u003Cint>[];\n    for (var j = 0; j \u003C n; j++) {\n      row.add(j);\n    }\n    matrix.add(row);\n  }\n  return matrix;\n}\n",[218,12593,12594,12617,12641,12671,12690,12720,12733,12737,12750,12754,12763],{"__ignoreMap":251},[255,12595,12596,12598,12600,12602,12604,12606,12608,12611,12613,12615],{"class":257,"line":258},[255,12597,3309],{"class":361},[255,12599,591],{"class":295},[255,12601,3309],{"class":361},[255,12603,591],{"class":295},[255,12605,541],{"class":361},[255,12607,7403],{"class":295},[255,12609,12610],{"class":265},"create_matrix",[255,12612,315],{"class":295},[255,12614,541],{"class":361},[255,12616,550],{"class":295},[255,12618,12619,12621,12623,12625,12627,12629,12631,12633,12635,12637,12639],{"class":257,"line":279},[255,12620,5295],{"class":261},[255,12622,12352],{"class":295},[255,12624,381],{"class":269},[255,12626,696],{"class":269},[255,12628,3309],{"class":361},[255,12630,591],{"class":295},[255,12632,541],{"class":361},[255,12634,3944],{"class":295},[255,12636,3944],{"class":269},[255,12638,5379],{"class":295},[255,12640,564],{"class":269},[255,12642,12643,12645,12647,12649,12651,12653,12655,12657,12659,12661,12663,12665,12667,12669],{"class":257,"line":292},[255,12644,303],{"class":302},[255,12646,270],{"class":295},[255,12648,577],{"class":261},[255,12650,883],{"class":295},[255,12652,381],{"class":269},[255,12654,402],{"class":288},[255,12656,586],{"class":269},[255,12658,883],{"class":295},[255,12660,591],{"class":269},[255,12662,457],{"class":295},[255,12664,586],{"class":269},[255,12666,1204],{"class":295},[255,12668,601],{"class":269},[255,12670,604],{"class":295},[255,12672,12673,12676,12678,12680,12682,12684,12686,12688],{"class":257,"line":299},[255,12674,12675],{"class":261},"    final",[255,12677,12386],{"class":295},[255,12679,381],{"class":269},[255,12681,696],{"class":269},[255,12683,541],{"class":361},[255,12685,3944],{"class":269},[255,12687,5379],{"class":295},[255,12689,564],{"class":269},[255,12691,12692,12694,12696,12698,12700,12702,12704,12706,12708,12710,12712,12714,12716,12718],{"class":257,"line":322},[255,12693,394],{"class":302},[255,12695,270],{"class":295},[255,12697,577],{"class":261},[255,12699,1741],{"class":295},[255,12701,381],{"class":269},[255,12703,402],{"class":288},[255,12705,586],{"class":269},[255,12707,1741],{"class":295},[255,12709,591],{"class":269},[255,12711,457],{"class":295},[255,12713,586],{"class":269},[255,12715,2544],{"class":295},[255,12717,601],{"class":269},[255,12719,604],{"class":295},[255,12721,12722,12724,12726,12728,12731],{"class":257,"line":334},[255,12723,12283],{"class":295},[255,12725,4533],{"class":269},[255,12727,4825],{"class":265},[255,12729,12730],{"class":295},"(j)",[255,12732,564],{"class":269},[255,12734,12735],{"class":257,"line":423},[255,12736,420],{"class":295},[255,12738,12739,12741,12743,12745,12748],{"class":257,"line":431},[255,12740,12298],{"class":295},[255,12742,4533],{"class":269},[255,12744,4825],{"class":265},[255,12746,12747],{"class":295},"(row)",[255,12749,564],{"class":269},[255,12751,12752],{"class":257,"line":1000},[255,12753,620],{"class":295},[255,12755,12756,12758,12761],{"class":257,"line":1007},[255,12757,337],{"class":302},[255,12759,12760],{"class":295}," matrix",[255,12762,564],{"class":269},[255,12764,12765],{"class":257,"line":1690},[255,12766,434],{"class":295},[245,12768,12770],{"className":636,"code":12769,"filename":638,"language":639,"meta":251,"style":251},"function create_matrix(n) {\n  const matrix = [];\n  for (let i = 0; i \u003C n; i++) {\n    const row = [];\n    for (let j = 0; j \u003C n; j++) {\n      row.push(j);\n    }\n    matrix.push(row);\n  }\n  return matrix;\n}\n",[218,12771,12772,12786,12798,12830,12844,12876,12892,12896,12912,12916,12924],{"__ignoreMap":251},[255,12773,12774,12776,12778,12780,12782,12784],{"class":257,"line":258},[255,12775,646],{"class":261},[255,12777,12222],{"class":265},[255,12779,315],{"class":269},[255,12781,220],{"class":273},[255,12783,465],{"class":269},[255,12785,370],{"class":269},[255,12787,12788,12790,12792,12794,12796],{"class":257,"line":279},[255,12789,5602],{"class":261},[255,12791,12760],{"class":295},[255,12793,285],{"class":269},[255,12795,5701],{"class":680},[255,12797,564],{"class":269},[255,12799,12800,12802,12804,12806,12808,12810,12812,12814,12816,12818,12820,12822,12824,12826,12828],{"class":257,"line":292},[255,12801,303],{"class":302},[255,12803,270],{"class":680},[255,12805,683],{"class":261},[255,12807,1204],{"class":295},[255,12809,285],{"class":269},[255,12811,402],{"class":288},[255,12813,586],{"class":269},[255,12815,1204],{"class":295},[255,12817,696],{"class":269},[255,12819,457],{"class":295},[255,12821,586],{"class":269},[255,12823,1204],{"class":295},[255,12825,601],{"class":269},[255,12827,707],{"class":680},[255,12829,506],{"class":269},[255,12831,12832,12835,12838,12840,12842],{"class":257,"line":299},[255,12833,12834],{"class":261},"    const",[255,12836,12837],{"class":295}," row",[255,12839,285],{"class":269},[255,12841,5701],{"class":680},[255,12843,564],{"class":269},[255,12845,12846,12848,12850,12852,12854,12856,12858,12860,12862,12864,12866,12868,12870,12872,12874],{"class":257,"line":322},[255,12847,394],{"class":302},[255,12849,270],{"class":680},[255,12851,683],{"class":261},[255,12853,2544],{"class":295},[255,12855,285],{"class":269},[255,12857,402],{"class":288},[255,12859,586],{"class":269},[255,12861,2544],{"class":295},[255,12863,696],{"class":269},[255,12865,457],{"class":295},[255,12867,586],{"class":269},[255,12869,2544],{"class":295},[255,12871,601],{"class":269},[255,12873,707],{"class":680},[255,12875,506],{"class":269},[255,12877,12878,12880,12882,12884,12886,12888,12890],{"class":257,"line":334},[255,12879,12283],{"class":295},[255,12881,4533],{"class":269},[255,12883,5797],{"class":265},[255,12885,315],{"class":680},[255,12887,4522],{"class":295},[255,12889,465],{"class":680},[255,12891,564],{"class":269},[255,12893,12894],{"class":257,"line":423},[255,12895,420],{"class":269},[255,12897,12898,12900,12902,12904,12906,12908,12910],{"class":257,"line":431},[255,12899,12298],{"class":295},[255,12901,4533],{"class":269},[255,12903,5797],{"class":265},[255,12905,315],{"class":680},[255,12907,12307],{"class":295},[255,12909,465],{"class":680},[255,12911,564],{"class":269},[255,12913,12914],{"class":257,"line":1000},[255,12915,620],{"class":269},[255,12917,12918,12920,12922],{"class":257,"line":1007},[255,12919,337],{"class":302},[255,12921,12760],{"class":295},[255,12923,564],{"class":269},[255,12925,12926],{"class":257,"line":1690},[255,12927,434],{"class":269},[183,12929,12930,12931,12934,12935,12937,12938,12940,12941,12943,12944,1411],{},"前面的矩阵乘法创建了结果矩阵 ",[218,12932,12933],{},"c","：它有 ",[218,12936,220],{}," 行、每行 ",[218,12939,220],{}," 个元素，所以需要保存 ",[218,12942,1399],{}," 个元素，空间复杂度是 ",[218,12945,1531],{},[183,12947,12948,12949,12951,12952,786,12954,786,12956,12958,12959,12961,12962,1411],{},"如果题目只计算“除输出以外的辅助空间”，那么可以把已经返回的结果矩阵 ",[218,12950,12933],{}," 排除，此时三层循环本身只使用 ",[218,12953,4510],{},[218,12955,4522],{},[218,12957,3190],{}," 等固定数量的变量，辅助空间是 ",[218,12960,2998],{},"。但如果讨论算法运行期间占用的总空间，或者把输出空间也算进去，就应写成 ",[218,12963,1531],{},[768,12965,12966],{"id":12966},"如何分析空间复杂度",[183,12968,12969],{},"分析空间复杂度时，可以按下面的顺序检查：",[12971,12972,12973,12976,12982,12985,12988,12991,12994,12997],"steps",{},[768,12974,12975],{"id":12975},"找出随规模增长的数据结构",[183,12977,12978,12979,12981],{},"检查代码中新建的数组、列表、哈希表或矩阵，并判断它们的大小是否随着 ",[218,12980,220],{}," 增长。",[768,12983,12984],{"id":12984},"计算递归调用栈",[183,12986,12987],{},"找出递归函数，计算一条递归路径上最多同时存在多少层调用。",[768,12989,12990],{"id":12990},"确认是否计算输出空间",[183,12992,12993],{},"判断题目是否把返回结果计入空间复杂度。没有特别说明时，通常讨论的是额外空间复杂度。",[768,12995,12996],{"id":12996},"合并同时存在的空间",[183,12998,12999],{},"同一时间同时存在的空间取总和；不同阶段先后使用、不会同时存在的空间，取占用量最大的阶段。",[1445,13001,13003,13020],{"title":13002},"本文结论",[183,13004,13005,13006,13008,13009,13011,13012,13014,13015,13017,13018,1411],{},"求和和原地冒泡排序是 ",[218,13007,2998],{},"；归并排序整体是 ",[218,13010,1503],{},"；全排列的辅助空间是 ",[218,13013,1503],{},"，但保存全部结果时是 ",[218,13016,12172],{},"；矩阵乘法包含输出矩阵时是 ",[218,13019,1531],{},[183,13021,13022,13023,13025],{},"空间复杂度的关键不是数循环执行了多少次，而是看运行过程中同时保存了多少与 ",[218,13024,220],{}," 有关的数据。",[13027,13028,13029],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":251,"searchDepth":279,"depth":279,"links":13031},[13032,13033,13038],{"id":181,"depth":279,"text":181},{"id":224,"depth":279,"text":224,"children":13034},[13035,13036,13037],{"id":770,"depth":292,"text":771},{"id":2968,"depth":292,"text":2968},{"id":9641,"depth":292,"text":9641},{"id":10601,"depth":279,"text":10601,"children":13039},[13040,13041,13042,13043,13044,13045],{"id":11128,"depth":292,"text":11128},{"id":12966,"depth":292,"text":12966},{"id":12975,"depth":292,"text":12975},{"id":12984,"depth":292,"text":12984},{"id":12990,"depth":292,"text":12990},{"id":12996,"depth":292,"text":12996},"有句话说的好：复杂度分析是数据结构和算法中最重要的知识点，毫不夸张的说，这就是数据结构与算法学习的核心所在。你学会了它你就入的了门，你学不会它，你就永远不知道门儿在哪。","md",null,{"date":13050,"categories":13051,"tags":13053},"2026-09-23",[13052],"algorithm",[13054],"算法",{"title":170,"description":13046},"eoler0rNOtKH1vKz2Cp_kBIWxu8Xr54G9dK4xUVI1X0",[13058,13048],{"title":162,"path":164,"stem":168,"description":13059,"icon":163},"数据结构、复杂度与经典题的学习笔记。",1790767048337]