AMcoder - javascript, python, java, html, php, sql

Տարօրինակ վարքագիծ կույտերով և բացասական թվերով

Ես ունեմ ալգորիթմ, որը ստեղծում է երկու կույտ՝ minHeap և maxHeap: Այս երկուսի միջև միակ տարբերությունն այն է, որ maxHeap-ը հակադարձում է minHeap-ի նշանը՝ պարզ հաքեր՝ Python-ի heapq տվյալների կառուցվածքը որպես առավելագույն կույտ օգտագործելու համար: Ահա կույտեր ստեղծելու իմ կոդը (կույտային ստեղնը հիմնականում բառարանում աշխատողների թիվն է շաբաթվա տվյալ օրվա համար).

for day in self.weekDict:
    if day != 'Saturday' and len(self.weekDict[day]) != 0: #saturdays and holidays not part of optimization
        heapq.heappush(minHeap, (len(self.weekDict[day]), day))
        heapq.heappush(maxHeap, (-len(self.weekDict[day]), day))

MinHeap-ն աշխատում է ճիշտ այնպես, ինչպես և սպասվում էր, բայց առավելագույն կույտը ինձ տարօրինակ պահվածք է տալիս, երբ նույն բանալիները մեկից ավելի են: Տես ներքեւում:

[(-8, 'Thursday'), (-7, 'Monday'), (-5, 'Friday'), (-7, 'Wednesday'), (-7, 'Tuesday')]

Ինչո՞ւ են վերջին երկու օրերը շարքից դուրս եկել. Արդյո՞ք դա այն պատճառով է, որ միայն առաջին օրն է երաշխավորված նվազագույնը, և երբ ես բաց թողնեմ առաջին օրը, կույտը ինքնաբերաբար կկարգավորվի:

11.01.2013

Պատասխանները:


1

Կույտը տեսակավորված ցուցակ չէ: Կույտը երկուական ծառ է, որը պատահում է պահվել որպես ցուցակ: Կույտի տարրերն ունեն հետևյալ հատկությունը.

a[k] ‹= a[2*k+1] և a[k] ‹= a[2*k+2] բոլոր k-ի համար

Ավելի ամբողջական բացատրության և գեղեցիկ նկարի համար տե՛ս փաստաթղթերը, որոնք կօգնեն հետևել կառուցվածքին. http://docs.python.org/2/library/heapq.html#theory

11.01.2013

2

Կույտերը դասավորված ցուցակներ չեն: Դրանք ցուցակներ են, որոնցից դուք կարող եք արագ քաշել առաջին տարրը, ինչպես նաև պահպանել կառուցվածքը, որպեսզի կարողանաք շարունակել արագ քաշել հաջորդ առաջին տարրը: Երբ դուք դիտում եք կույտը որպես ցուցակ, տարրերն ամբողջությամբ չեն դասավորված:

11.01.2013
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..