馃弳浣滆?呯畝浠嬶紝鎰氬叕绉绘浠g爜馃弳銆婂ご琛斻?嬶細鍗庝负浜戠壒绾︾紪杈戯紝鍗庝负浜戜簯鍏变韩涓撳锛屽崕涓哄紑鍙戣?呬笓瀹讹紝鍗庝负浜у搧浜戞祴璇曚笓瀹躲?丆SDN鍗氬涓撳銆侀樋閲屼簯涓撳鍗氫富銆佽吘璁簯浼樼鍗氫富銆佹帢閲戜紭绉?鍗氫富銆?1CTO鍗氬涓撳绛夝煆嗐?婅繎鏈熻崳瑾夈?嬶細CSDN鍗氬涔嬫槦TOP2銆佸崕涓轰簯鍗佷匠鍗氫富绛夝煆嗐?婂崥瀹㈠唴瀹广?嬶細.NET銆丣ava銆丳ython銆丟o銆丯ode銆佸墠绔?両OS銆丄ndroid銆侀缚钂欍?丩inux銆佺墿鑱旂綉銆佺綉缁滃畨鍏ㄣ?佸ぇ鏁版嵁銆佷汉宸ユ櫤鑳姐?乁3D娓告垙銆佸皬绋嬪簭绛夌浉鍏抽鍩熺煡璇嗐??馃弳馃帀娆㈣繋馃憤鐐硅禐鉁嶈瘎璁衡瓙鏀惰棌馃殌绠?浠嬫暟鎹粨鏋勬槸璁$畻鏈虹瀛︿腑鐨勪竴涓噸瑕佹蹇点?傚畠鎻忚堪浜嗘暟鎹箣闂寸殑缁勭粐鍜屽叧绯伙紝浠ュ強杩欎簺鏁版嵁鐨勮闂拰鎿嶄綔銆傚父瑙佺殑鏁版嵁缁撴瀯鍖呮嫭锛氭暟缁勩?侀摼琛ㄣ?佹爤銆侀槦鍒椼?佸搱甯岃〃銆佹爲銆佸爢鍜屽浘銆傛暟缁勶細鏄竴绉嶇嚎鎬ф暟鎹粨鏋勶紝瀹冨皢涓?缁勭浉鍚岀被鍨嬬殑鏁版嵁鍏冪礌瀛樺偍鍦ㄤ竴璧凤紝骞朵负姣忎釜鍏冪礌鍒嗛厤鍞竴鐨勭储寮曘?傛暟缁勭殑鐗圭偣鏄叿鏈夐殢鏈鸿闂兘鍔涖?傞摼琛細涔熸槸涓?绉嶇嚎鎬ф暟鎹粨鏋勶紝鐢变竴绯诲垪鑺傜偣缁勬垚锛屾瘡涓妭鐐瑰寘鍚暟鎹拰瀵逛笅涓?涓妭鐐圭殑寮曠敤銆傞摼琛ㄧ殑鐗圭偣鏄彲浠ュ姩鎬佹彃鍏ユ垨鍒犻櫎鑺傜偣锛屼絾璁块棶鑺傜偣鏃堕渶瑕佷粠澶村紑濮嬮亶鍘嗐?傛爤锛氭槸涓?绉嶅悗杩涘厛鍑猴紙LIFO锛夌殑鏁版嵁缁撴瀯锛屽彧鑳藉湪鏍堥《杩涜鎻掑叆鍜屽垹闄ゆ搷浣溿?傚爢鏍堥?氬父鐢ㄤ簬瀹炵幇閫掑綊绠楁硶銆佽〃杈惧紡姹傚?煎拰鍐呭瓨绠$悊銆傞槦鍒楋細鏄竴绉嶅厛杩涘厛鍑猴紙FIFO锛夌殑鏁版嵁缁撴瀯锛屽彲浠ュ湪闃熷垪灏鹃儴鎻掑叆鍏冪礌锛屽湪闃熷垪澶撮儴鍒犻櫎鍏冪礌銆傞槦鍒楅?氬父鐢ㄤ簬鏁版嵁缂撳瓨銆佹秷鎭槦鍒椼?佺綉缁滈?氫俊绛夊満鏅?傚搱甯岃〃锛氫篃绉颁负鍝堝笇琛紝鏄竴绉嶆牴鎹叧閿瓧鐩存帴璁块棶鏁版嵁鐨勬暟鎹粨鏋勩?傚搱甯岃〃閫氬父鐢辨暟缁勫拰鍝堝笇鍑芥暟缁勬垚锛屽彲浠ュ湪甯告暟鏃堕棿鍐呮墽琛屾彃鍏ャ?佸垹闄ゅ拰鏌ユ壘鎿嶄綔銆傛爲锛氭槸涓?绉嶉潪绾挎?ф暟鎹粨鏋勶紝鐢变竴绯诲垪鑺傜偣缁勬垚锛屾瘡涓妭鐐瑰彲浠ユ湁澶氫釜瀛愯妭鐐广?傛爲鐨勭壒鐐规槸鑺傜偣鍙互鍔ㄦ?佹彃鍏ユ垨鍒犻櫎銆傚父瑙佺殑鏍戠粨鏋勬湁浜屽弶鏍戙?佸钩琛℃爲銆佹悳绱㈡爲绛夈?傚爢锛氭槸涓?绉嶇壒娈婄殑?爲缁撴瀯锛岄?氬父鐢ㄤ簬瀹炵幇浼樺厛绾ч槦鍒椼?佸爢鎺掑簭绛夌畻娉曘?傚爢鍒嗕负鏈?澶у爢鍜屾渶灏忓爢銆傛渶澶у爢涓瘡涓妭鐐圭殑鍊奸兘澶т簬鎴栫瓑浜庡叾瀛愯妭鐐圭殑鍊硷紝鏈?灏忓爢鍒欑浉鍙嶃?傚浘锛氭槸涓?绉嶇敱鑺傜偣鍜岃竟缁勬垚鐨勯潪绾挎?ф暟鎹粨鏋勩?傚畠鍙互鐢ㄦ潵琛ㄧず鍚勭瀹炰綋涔嬮棿鐨勫叧绯伙紝渚嬪绀句氦缃戠粶銆佽矾绾垮浘銆佺數璺浘绛夈?傚浘閬嶅巻鍜屾渶鐭矾寰勭畻娉曟槸甯歌鐨勫浘绠楁硶銆?馃殌1銆傚爢馃攷1銆傚熀鏈?濇兂 鍫嗘槸涓?绉嶅熀浜庡畬鍏ㄤ簩鍙夋爲鐨勬暟鎹粨鏋勩?傚垎涓哄ぇ鏍瑰爢鍜屽皬鏍瑰爢涓ょ銆傚熀鏈?濇兂濡備笅锛?澶ф牴鍫嗭細姣忎釜鑺傜偣鐨勫?奸兘澶т簬鎴栫瓑浜庡叾宸﹀彸瀛愯妭鐐圭殑鍊硷紝鏈?澶у?煎湪鍫嗙殑鏍硅妭鐐逛笂銆傚皬鏍瑰爢锛氭瘡涓妭鐐圭殑鍊奸兘灏忎簬鎴栫瓑浜庡叾宸﹀彸瀛愯妭鐐圭殑鍊硷紝涓旀渶灏忓?煎湪鍫嗙殑鏍硅妭鐐逛笂銆傚爢鐨勬彃鍏ワ細灏嗗厓绱犳彃鍏ュ埌鍫嗙殑鏈熬锛岀劧鍚庤皟鏁村爢缁撴瀯锛屼娇鍏朵繚鎸佸爢鐨勬?ц川銆傚爢鐨勫垹闄わ細鍒犻櫎鍫嗙殑鏍硅妭鐐癸紝鐒跺悗灏嗗爢鐨勫熬鑺傜偣绉诲姩鍒版牴鑺傜偣锛岀劧鍚庡啀娆¤皟鏁村爢缁撴瀯銆傚爢鎺掑簭锛氬皢瑕佹帓搴忕殑鏁扮粍鏋勫缓鎴愬爢锛岀劧鍚庨噸澶嶅垹闄ゅ爢椤跺厓绱犲拰璋冩暣鍫嗙粨鏋勭殑杩囩▼锛岀洿鍒板爢涓虹┖锛屽嵆鍙緱鍒版湁搴忓簭鍒椼?傚爢鐨勫簲鐢細鍫嗗彲浠ョ敤鏉ヨВ鍐充竴浜涗紭鍏堢骇鐩稿叧鐨勯棶棰橈紝姣斿浼樺厛绾ч槦鍒椼?佹煡鎵綯opK绛夈?傚湪姝ゆ彃鍏ュ浘鐗囪鏄庰煍?.甯哥敤鍫嗘搷浣滀唬鐮佽瑷?锛歝# copy public class heap { public void testPush(PriorityQueue heap, int val) { heap.Enqueue(val, val); } // 鍫嗕腑鐨勫厓绱?Console.WriteLine($"\n鍏冪礌 {val} 鏀惧叆鍫嗗悗\n"); PrintUtil.PrintHeap(鍫?; } public void testPop(PriorityQueue heap) { int val = heap.Dequeue() ; // 鍫嗛《鍏冪礌浠庡爢涓嚭鏉?Console.WriteLine($"\n鍫嗛《鍏冪礌{val}浠庡爢涓嚭鏉ュ悗\n"); PrintUtil.PrintHeap(鍫?; } [Test] public void Test() { /* 鍒濆鍖栧爢*/ // 鍒濆鍖栧皬椤跺爢 PriorityQueue minHeap = new PriorityQueue(); // 鍒濆鍖栧ぇ椤跺爢锛堜娇鐢╨ambda琛ㄨ揪寮忎慨鏀笴omparator锛?PriorityQueue maxHeap = new PriorityQueue(Comparer.Create((x, y) => y - x) 锛夛紱 Console.WriteLine("涓嬮潰鐨勬祴璇曟牱鏈槸涓?涓ぇ鐨勯《鍫?); /* 灏嗗厓绱犳斁鍏ュ爢 */ testPush(maxHeap, 1); testPush(maxHeap, 3); testPush(maxHeap, 2);娴嬭瘯鎺紙鏈?澶у爢锛?); testPush(maxHeap, 4); /* 鑾峰彇鍫嗛《鍏冪礌*/ int peek = maxHeap.Peek(); Console.WriteLine($"鍫嗛《鍏冪礌鏄瘂peek}"); /* 鍫嗛《鍏冪礌鍑哄爢*/ // 鍑哄爢鐨勫厓绱犱細褰㈡垚浠庡ぇ鍒板皬鐨勫簭鍒?testPop(maxHeap); testPop(鏈?澶у爢); testPop(鏈?澶у爢); testPop(鏈?澶у爢); testPop(鏈?澶у爢); /* 鑾峰彇鍫嗗ぇ灏?/ int size = maxHeap.Count; Console.WriteLine($"鍫嗗厓绱犱釜鏁颁负{size}"); /* 鍒ゆ柇鍫嗘槸鍚︿负绌?/ bool isEmpty = maxHeap.Count == 0; Console.WriteLine($"鍫嗘槸鍚︿负绌簕isEmpty}"); /* 杈撳叆閾捐〃骞舵瀯寤哄爢*/ var list = new int[] { 1, 3, 2, 5, 4 }; minHeap = new PriorityQueue(list.Select( x => (x, x))); Console.WriteLine("杈撳叆鍒楄〃骞跺垱寤轰竴涓皬椤跺爢鍚?); PrintUtil.PrintHeap(minHeap); }}馃攷3銆傚爢瀹炵幇浠g爜璇█锛歝# copy/* Large Top heap*/class MaxHeap { // 浣跨敤鍒楄〃鑰屼笉鏄暟缁勶紝杩欐牱灏变笉闇?瑕佽?冭檻鎵╁睍闂 private readonly List maxHeap; /* 鍒涘缓绌哄爢鐨勬瀯閫犲嚱鏁?/ public MaxHeap() { maxHeap = new List(); } /* 鏋勯?犲嚱鏁帮紝鏍规嵁杈撳叆鍒楄〃鏋勫缓鍫?/ public MaxHeap(IEnumerable nums) { // 灏嗗垪琛ㄥ厓绱犲師鏍锋坊鍔犲埌鍫嗕腑 maxHeap = new List(nums ); // 鍫嗛櫎鍙跺瓙鑺傜偣涔嬪鐨勬墍鏈夎妭鐐?var size = Parent(this.size() - 1); for (int i = size; i >= 0; i--) { siftDown(i); } } /* 鑾峰彇宸﹀瓙鑺傜偣绱㈠紩*/ int left(int i) { return 2 * i + 1; } /* 鑾峰彇鍙冲瓙鑺傜偣绱㈠紩*/ int right(int i) { return 2 * i + 2; } /* 鑾峰彇鐖惰妭鐐圭殑绱㈠紩*/ int Parent(int i) { return (i - 1) / 2; // 鍚戜笅闄 /* 璁块棶鍫嗛《鍏冪礌*/ public int peek() { return maxHeap[0]; } /* 灏嗗厓绱犳斁鍏ュ爢涓?/ public void Push(int val) { // 娣诲姞鑺傜偣 maxHeap.Add(val); // 浠庝笅鍒颁笂鍫?siftUp(size() - 1); } /* 鑾峰彇鍫嗗ぇ灏?*/ public int size() { return maxHeap.Count; } /* 鍒ゆ柇鍫嗘槸鍚︿负绌?/ public bool isEmpty() { return size() == 0; } /* 浠庤妭鐐?i 寮?濮嬶紝浠庡爢搴曞埌鍫嗛《 */ void siftUp(int i) { while (true) {// 鑾峰彇鑺傜偣 i 鐨勭埗鑺傜偣 int p = Parent(i); // 濡傛灉鈥滆法瓒婃牴鑺傜偣鈥濇垨鑰呪?滆鑺傜偣涓嶉渶瑕佷慨澶嶁?濓紝鍒欑粨鏉熷爢 if (p < 0 || maxHeap[i] <= maxHeap[ p]) break; // 浜ゆ崲涓や釜鑺傜偣 swap(i, p); // 鍚戜笂寰幆鍫?i = p; } } /* 浠庡爢涓Щ闄ゅ厓绱?/ public int pop() { // 娓呯┖澶勭悊 if (isEmpty ()) throw new IndexOutOfRangeException(); // 浜ゆ崲鏍硅妭鐐瑰拰鏈?鍙宠竟鐨勫彾瀛愯妭鐐癸紙鍗充氦鎹㈢涓?涓厓绱犲拰鏈?鍚庝竴涓厓绱狅級 swap(0, size() - 1); // 鍒犻櫎鑺傜偣 int val = maxHeap.Last( ); maxHeap.RemoveAt(size() - 1); // 浠庝笂鍒颁笅鍫?siftDown(0); // 杩斿洖鍫嗛《鍏冪礌 return val; } /* 浠庤妭鐐?i 寮?濮嬶紝浠庝笂鍒颁笅鍫? / void siftDown(int i) { while (true) { // 纭畾鑺傜偣 i,l,r 涓?兼渶澶х殑鑺傜偣锛岃涓?ma int l =宸︼紙i锛夛紝r = 鍙筹紙i锛夛紝ma = i锛?if (l < size() && maxHeap[l] > maxHeap[ma]) ma = l; if (r < size() && maxHeap[r] > maxHeap[ma]) ma = r;// 濡傛灉鈥滆妭鐐筰鏈?澶р?濇垨鑰呪?滅┛杩囧彾瀛愯妭鐐光?濓紝鍒欑粨鏉熷爢 if (ma == i) break; // 浜ゆ崲涓や釜鑺傜偣 swap(i, ma); // 鍚戜笅寰幆鍫?i = ma ; } } /* 浜ゆ崲鍏冪礌*/ void swap(int i, int p) { (maxHeap[i], maxHeap[p]) = (maxHeap[p], maxHeap[i]); } /* 鎵撳嵃鍫嗭紙浜屽弶鏍戯級 */ public void print() { var queue = new Queue(maxHeap); PrintUtil.PrintHeap(闃熷垪); }} public class my_heap { [Test] public void Test() { /* 鍒濆鍖栧ぇ鍫? / MaxHeap maxHeap = new MaxHeap(new int[] { 9, 8, 6, 6, 7, 5, 2, 1, 4, 3, 6, 2 }); Console.WriteLine("\n杈撳叆鍒楄〃骞跺湪涔嬪悗鏋勫缓鍫?); maxHeap.print(); /* 鑾峰彇鍫嗛《鍏冪礌*/ int peek = maxHeap.peek(); Console.WriteLine($"鍫嗛《鍏冪礌鏄瘂peek}"); /* 灏嗗厓绱犳斁鍏ュ爢*/ int val = 7; maxHeap.push(val); Console.WriteLine($"鍏冪礌{val}鏀惧叆鍫嗗悗"); maxHeap.print(); /* 浠庡爢涓彇鍑哄爢椤跺厓绱?/ peek = maxHeap.pop() ;鎺у埗鍙?WriteLine($"椤堕儴鍏冪礌{peek}浠庡爢涓嚭鏉ュ悗"); maxHeap.print(); /* 鑾峰彇鍫嗗ぇ灏?/ int size = maxHeap.size(); Console.WriteLine($"鍫嗗厓绱犱釜鏁颁负{size }"); /* 鍒ゆ柇鍫嗘槸鍚︿负绌?/ bool isEmpty = maxHeap.isEmpty(); Console.WriteLine($"鍫嗘槸鍚︿负绌簕isEmpty}"); }}鍦ㄦ鎻掑叆鍥剧墖璇存槑馃攷4.寤哄爢鎿嶄綔 鍦ㄥ爢鎺掑簭涓紝寤哄爢鏄寚灏嗘棤搴忓簭鍒楀彉鎴愬爢锛堜簩鍙夊爢锛夈?傚缓鍫嗘搷浣滅殑鏃堕棿澶嶆潅搴︽槸O(n)锛岃繖鏄爢鎺掑簭鐨勭涓?姝ャ?傚爢鏄竴妫靛畬鍏ㄤ簩鍙夋爲锛屽叾涓瘡涓妭鐐圭殑鍊奸兘澶т簬鎴栫瓑浜庡叾宸﹀彸瀛愯妭鐐圭殑鍊硷紝绉颁负鏈?澶у爢锛涙垨鑰呮瘡涓妭鐐圭殑鍊煎皬浜庢垨绛変簬鍏跺乏鍙冲瓙鑺傜偣鐨勫?硷紝绉颁负灏忔牴鍫嗭紙min heap锛夈?傛瀯寤哄爢鐨勮繃绋嬪氨鏄牴鎹爢鐨勫睘鎬у皢鏃犲簭搴忓垪璋冩暣涓哄爢鐨勮繃绋嬨?傚湪鏋勫缓鍫嗙殑杩囩▼涓紝浠庢渶鍚庝竴涓潪鍙跺瓙鑺傜偣锛堝彾瀛愯妭鐐圭殑鐖惰妭鐐癸級寮?濮嬶紝渚濇鍚戜笂璋冩暣鍫嗐?傚浜庢瘡涓妭鐐癸紝灏嗗叾澶у皬涓庡乏鍙冲瓙鑺傜偣杩涜姣旇緝锛屽苟浣跨敤鏈?澶?鏈?灏忕殑鑺傜偣浣滀负鐖惰妭鐐广??銆傚鏋滃綋鍓嶈妭鐐硅浜ゆ崲锛屽垯缁х画鍚戜笅璋冩暣璇ヨ妭鐐癸紝閲嶅涓婅堪姝ラ锛岀洿鍒版墍鏈夎妭鐐归兘婊¤冻鍫嗙殑灞炴?с?傚缓鍫嗘搷浣滅殑鏃堕棿澶嶆潅搴︿负O(n)锛屽洜涓哄彧闇?瑕佽皟鏁撮潪鍙跺瓙鑺傜偣锛屽嵆n/2涓妭鐐广?傝繖閲屾彃鍏ュ浘鐗囪鏄庰煍?.Top-K闂鍫嗘槸涓?妫靛畬鍏ㄤ簩鍙夋爲锛屾弧瓒冲爢搴忓睘鎬э細姣忎釜鑺傜偣鐨勫?煎ぇ浜庣瓑浜庯紙鎴栧皬浜庣瓑浜庯級鍏跺乏鍙崇殑鍊煎瓙鑺傜偣銆傚爢鐨凾op-K闂鏄粠鏈帓搴忕殑鏁扮粍涓壘鍒板墠K涓渶澶э紙鎴栨渶灏忥級鍏冪礌銆傝В鍐冲爢鐨凾op-K闂鐨勫熀鏈?濇兂鏄淮鎶や竴涓ぇ灏忎负K鐨勫皬锛堟垨澶э級鏍瑰爢锛岄亶鍘嗘暟缁勬椂锛屽皢鍏冪礌涓庡皬锛堟垨澶э級鏍瑰爢鐨勯《閮ㄥ厓绱犺繘琛屾瘮杈冦?傚鏋滃ぇ浜庯紙鎴栧皬浜庯級鍫嗛《鍏冪礌锛屽垯寮瑰嚭鍫嗛《鍏冪礌骞跺皢璇ュ厓绱犳坊鍔犲埌鍫嗕腑銆傞亶鍘嗗畬鎴愬悗锛屽墠K涓渶澶э紙鎴栨渶灏忥級鍏冪礌淇濆瓨鍦ㄥ爢涓?傚叿浣撳疄鐜板垎涓轰袱绉嶏細 1銆佸爢鎺掑簭娉曪細鍒╃敤鍫嗘帓搴忕殑鎬濇兂锛屾瀯寤轰竴涓皬鐨勬牴鍫嗭紝鐒跺悗灏嗘湭鎺掑簭鐨勫厓绱犳坊鍔犲埌鍫嗕腑锛屽脊鍑哄爢椤跺厓绱狅紝鐩村埌鍫嗗ぇ灏忎负K锛屾渶鍚庣殑鍏冪礌鏄墠K涓渶澶х殑鍏冪礌銆?.蹇?熼?夋嫨娉曪細鍒╃敤蹇?熸帓搴忕殑鎬濇兂瀵规暟缁勮繘琛屽垝鍒嗭紝浣垮乏杈圭殑鏁板瓧灏忎簬鍙宠竟鐨勬暟瀛楋紝鐒跺悗鏍规嵁K 鐨勫ぇ灏忥紝鐩村埌鎵惧埌鍓?K 涓渶澶х殑銆傛暟瀛椼??馃5.1 閬嶅巻閫夋嫨鍦ㄦ鎻掑叆鍥剧墖鎻忚堪馃5.2 鎺掑簭鍦ㄦ鎻掑叆鍥剧墖鎻忚堪馃5.3 鍫嗕唬鐮佽瑷?锛歝# copy/* 鏍规嵁鍫嗘煡鎵炬暟缁勪腑鏈?澶х殑 k 涓厓绱?/using NUnit.Framework;static PriorityQueue topKHeap(int[] nums, int k){ PriorityQueue heap = new PriorityQueue(); // 灏嗘暟缁勭殑鍓?k 涓厓绱犳斁鍏ュ爢涓?for (int i = 0; i < k; i++) { heap.Enqueue(nums[i], nums[i]); } // 浠庣 k 涓厓绱犲紑濮嬶紝淇濇寔鍫嗙殑闀垮害涓?k for (int i = k; i < nums.Length; i++ ) { // 濡傛灉褰撳墠鍏冪礌澶т簬鍫嗛《鍏冪礌锛屼粠鍫嗕腑绉婚櫎椤堕儴鍏冪礌骞跺皢褰撳墠鍏冪礌鏀惧叆鍫嗕腑 if (nums[i] > heap.Peek()) { heap.Dequeue();鍫?Enqueue(nums[i], nums[i]); } } 杩斿洖鍫?}int[] nums = { 1, 7, 6, 3, 2,8,9 };int k = 3;PriorityQueue res = topKHeap (nums, k);Console.WriteLine (鈥滄渶澶х殑鈥?k+鈥濅釜鍏冪礌鏄??;姝ゅ鎻掑叆鍥剧墖鎻忚堪 姝ゅ鎻掑叆鍥剧墖鎻忚堪 馃攷 6.浼樼己鐐?鍫嗘槸涓?涓畬鍏ㄤ簩鍙夋爲缁撴瀯锛屽悓鏃舵弧瓒冲爢搴忓睘鎬э紙Heap property锛夛紝鍗崇埗鑺傜偣鐨勫?兼?绘槸灏忎簬鎴栧ぇ浜庡瓙鑺傜偣鐨勫?笺?傚爢鍦ㄦ暟鎹粨鏋勪笂鏈変互涓嬩紭鐐瑰拰缂虹偣锛?浼樼偣锛氬揩閫熸壘鍒版渶澶у?硷細鍫嗘槸涓?绉嶄紭绉?鐨勬暟鎹粨鏋勶紝鍙互蹇?熸壘鍒版渶澶у?笺?傚湪鏈?灏忓爢涓紝鏍硅妭鐐瑰缁堝瓨鍌ㄦ渶灏忕殑鍏冪礌锛涘湪鏈?澶у爢涓紝鏍硅妭鐐瑰缁堝瓨鍌ㄦ渶澶х殑鍏冪礌銆傝繖浣垮緱鍫嗘垚涓哄疄鐜颁紭鍏堢骇闃熷垪鐨勭悊鎯抽?夋嫨銆傛彃鍏ュ拰鍒犻櫎鍏冪礌鐨勬晥鐜囬珮锛氬湪鍫嗕腑鎻掑叆鍜屽垹闄ゅ厓绱犵殑鏃堕棿澶嶆潅搴﹂?氬父涓篛(log n)銆傝繖鏄洜涓哄爢鏄竴妫靛畬鍏ㄤ簩鍙夋爲锛屾彃鍏ュ拰鍒犻櫎鎿嶄綔鏈?澶氬彧闇?瑕丱(log n)娆℃爲鐨勬瘮杈冨拰浜ゆ崲鍗冲彲瀹屾垚銆傝兘澶熼珮鏁堝鐞嗗姩鎬佹暟鎹泦鍚堬細鍫嗚兘澶熼珮鏁堝鐞嗗姩鎬佹暟鎹泦鍚堬紝鍗冲湪鍏冪礌鏁伴噺涓嶆柇鍙樺寲鏃惰兘澶熷揩閫熸壘鍒版渶浼樺?笺?傜己鐐癸細涓嶆敮鎸佹煡鎵句换鎰忓厓绱狅細铏界劧鍫嗗彲浠ュ揩閫熸壘鍒版渶澶у?硷紝浣嗗鏋滈渶瑕佹煡鎵句换鎰忓厓绱狅紝鍒欓渶瑕侀亶鍘嗘墍鏈夎妭鐐癸紝鏃堕棿澶嶆潅搴︿负O(n)銆備笉鏀寔鍏冪礌鐨勫揩閫熶慨鏀癸細褰撳爢涓煇涓厓绱犵殑鍊煎彂鐢熷彉鍖栨椂锛岄渶瑕侀噸鏂拌皟鏁村爢鏉ョ淮鎸佸爢椤哄簭灞炴?э紝杩欓?氬父闇?瑕丱(n)鐨勬椂闂村鏉傚害銆傛棤娉曚繚璇佺粨鏋勫钩琛★細鍫嗘棤娉曞儚骞宠 浜屽弶鏍戜竴鏍蜂?濊瘉缁撴瀯骞宠 锛岃繖鍙兘浼氬鑷存煇浜涙搷浣滅殑鏈?鍧忔儏鍐垫椂闂村鏉傚害杈冮珮銆備緥濡傦紝鍦ㄦ瀬绔儏鍐典笅锛屽爢鍙兘閫?鍖栦负閾捐〃锛屽鑷存彃鍏ュ拰鍒犻櫎鎿嶄綔鐨勬椂闂村鏉傚害涓?O(n)銆?馃攷7.搴旂敤鍦烘櫙 鍫嗘槸涓?绉嶅熀浜庡畬鍏ㄤ簩鍙夋爲鐨勬暟鎹粨鏋勩?傚湪瀹為檯搴旂敤涓畠鏈夊緢澶氬簲鐢ㄥ満鏅?備互涓嬫槸涓?浜涘父瑙佺殑搴旂敤鍦烘櫙锛?1銆佸爢鎺掑簭锛氬爢鎺掑簭鏄竴绉嶉珮鏁堢殑鎺掑簭绠楁硶锛屽埄鐢?heap 鐨勫睘鎬э紝鍙互瀹炵幇鏃堕棿澶嶆潅搴︿负 O(nlogn) 鐨勬帓搴忋??2.浼樺厛绾ч槦鍒楋細鍙互鍒╃敤鍫嗘潵瀹炵幇浼樺厛绾ч槦鍒楋紝鍙互鍦∣(logn)鏃堕棿鍐呮壘鍒版渶灏忔垨鏈?澶х殑鍏冪礌銆?3銆佹煡鎵総op k闂锛氬鏋滄兂鍦ㄤ竴缁勬暟鎹腑鎵惧埌top k鏈?澶ф垨鑰卼op k鏈?灏忕殑鏁版嵁锛屽彲浠ヤ娇鐢ㄥ爢鏉ュ疄鐜般??4. 姹備腑浣嶆暟锛氬埄鐢ㄥ爢锛屼綘鍙互鍦∣(logn)鏃堕棿鍐呮眰鍑轰竴缁勬暟鎹殑涓綅鏁般??5銆佸浘鎼滅储鐨勬渶鐭矾寰勭畻娉曪細姣斿Dijkstra绠楁硶鍜孭rim绠楁硶锛岄兘闇?瑕佷娇鐢ㄥ爢鏉ュ疄鐜颁紭鍏堢骇闃熷垪銆傛?讳箣锛屽爢鏄竴绉嶉潪甯告湁鐢ㄧ殑鏁版嵁缁撴瀯锛屽彲浠ュ湪寰堝搴旂敤鍦烘櫙涓彂鎸ラ噸瑕佷綔鐢ㄣ?傛垜姝e湪鍙傚姞鑵捐绉戞妧鍒涢?犵壒璁惀绗笁鏈熸湁濂栧緛鏂囨瘮璧涳紝鎴戝皢缁勯槦鑾峰锛?
站长声明
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件
举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
相关文章
-
在观看《钢铁侠》和《复仇联盟》系列电影时,除了扣人心弦的战斗情节,吸引无数人目光的还有钢铁侠的酷炫机器人类这一代比上一代更强大。 第一的。 这些机甲实际上是一种机械外骨骼,将人类智能与外部机械动力装置相结合,为人们提供额外的动力或能力,达到增强人体功能的目的
06-21
-
香港上市公司国泰航空(3.HK)公布4月份客货量数据。
06-18
-
通用汽车销售汽车赚到的钱有超过1/5用来填补自动驾驶的漏洞。 2017年,通用汽车赚了1亿美元,但旗下自动驾驶公司Cruise一年就花了19亿美元(约合人民币1亿元)。 更糟糕的是,Cruise的税前亏损高达27亿美元,这还不包括第四季度裁员带来的5亿美元重组费用。 对自动驾驶寄予厚
06-17
-
中概股不相信春哥,现在也复活了。 1月18日,中国最大的汽车租赁公司神州租车向美国证券交易委员会(SEC)提交了上市申请。 它是美国证券交易委员会修改提交规则后第一家向美国证券交易委员会提交上市申请的中国公司。 。 与此同时,作为浑水的创始人、中概股的“空军
06-17
-
1月20日投资界消息,据36氪了解,金竟科技近期获得1万元天使轮融资。 本轮融资由粤港澳大湾区协同创新研究院、投控东海投资资助。 据悉,本轮融资将主要用于产品量产、市场开拓以及应用实验室的建立。 公开资料显示,金竟科技成立于2016年12月,是一家阴极荧光系统开发商。
06-18
-
《新款闪充自拍专家》OPPO R9将于3月24日线上线下同步开售!为了确保能够满足广大用户对这款高性能高颜值产品的需求,OPPO已经全面投入生产,并在OPPO电商上积极备货。 其仓库已经装满了OPPO R9的箱子,准备第一时间发货。 发售当天来一场大战斗吧! “新品闪充自拍专家”OPP
06-18
-
8月23日,退伍军人创业就业交流活动第一期在重庆成功举办互联网产业园。 本次活动由重庆市两江新区社会保障局(重庆市两江新区退役军人事务局)、重庆市两江新区社会保障管理中心指导,重庆渝高新兴科技发展有限公司、重庆两江新区互联网承办工业园区党群服务中心。 会议由晴
06-17
-
2020年6月25日/美通社/——随着科技的不断进步,在现代生活中,人类越来越多地将机械物体交给机器系统。 要负责控制,汽车也不例外,正在逐步向自动驾驶方向发展。 自动驾驶的感知层依靠各类传感器来收集驾驶时周围环境的信息。 感知层的组件包括摄像头、毫米波雷达、激光雷达
06-06
-
广东常见饮料要IPO了。 投资界——天天IPO获悉,天地一号已于近日向证监会广东监管局提交公司公开发行股票并在深交所主板上市的辅导材料和备案材料。 指导机构为中信证券。 20世纪90年代,陈生偶然了解到一种新的饮用方式“雪碧加醋”。 他立刻意识到了巨大的市场前景,随后创
06-18
-
全球最大PE来了。 本周,黑石集团发布了第三季度财报,资产规模史无前例地达到1亿美元,约合人民币4.67万亿元。 今年以来,网络交友公司Bumble和PE巨头押注的瑞典燕麦饮料品牌Oatly相继IPO,各自创造了数百亿美元的市值。 最新消息称,黑石正准备募集四只新基金,总规模达1亿
06-18
-
黄冈日报 据黄冈日报报道,三里铺超宽偏光片生产项目在黄冈高新区正式开工建设。 据三里铺此前公告,该项目总投资1亿元,设计产能1.4亿平方米/年,预计年产值1亿元。 它将分两期建设。 一期投资50亿元,其中固定资产投资24亿元,流动资金26亿元。 拟建设宽幅毫米和超宽幅毫米
06-06
-
10月10日,目前科技公司分拆盛行,赛门铁克也来迎头赶上。 以其诺顿防病毒软件而闻名的赛门铁克周四宣布,它将分拆为两家独立的上市公司,一家专注于安全应用程序,另一家专注于信息管理。 该公司目前市值为1亿美元。 赛门铁克的总裁和首席执行官迈克尔布朗在一份声明中表
06-17
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用