Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
YouTube Security VideosAndroid Police: Samsung is smashing records! #shorts #tech #phones(21.09.2026 um 13:55 Uhr)
YouTube Security Videosheise & c't: Bundesnetzagentur wollte diesen Futterautomaten verbieten(21.09.2026 um 13:53 Uhr)
YouTube Security VideosNeil Patel: Your Google Traffic Isn't An Asset It's A Loan #shorts(21.09.2026 um 14:05 Uhr)
Windows Tipps & SecurityF-14 A Tomcat Top Gun endlich als Revell Klemmbausteinmodell erhältlich(21.09.2026 um 14:27 Uhr)
Sichere ProgrammierungShow the Hand-Back Sample Before Approving an Agent Score(21.09.2026 um 14:15 Uhr)
Sichere ProgrammierungHybrid retrieval in one Postgres query: RRF over tsvector + pgvector(21.09.2026 um 14:15 Uhr)
YouTube Security VideosAndroid Police: Samsung is smashing records! #shorts #tech #phones(21.09.2026 um 13:55 Uhr)
YouTube Security Videosheise & c't: Bundesnetzagentur wollte diesen Futterautomaten verbieten(21.09.2026 um 13:53 Uhr)
YouTube Security VideosNeil Patel: Your Google Traffic Isn't An Asset It's A Loan #shorts(21.09.2026 um 14:05 Uhr)
Windows Tipps & SecurityF-14 A Tomcat Top Gun endlich als Revell Klemmbausteinmodell erhältlich(21.09.2026 um 14:27 Uhr)
Sichere ProgrammierungShow the Hand-Back Sample Before Approving an Agent Score(21.09.2026 um 14:15 Uhr)
Sichere ProgrammierungHybrid retrieval in one Postgres query: RRF over tsvector + pgvector(21.09.2026 um 14:15 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

Thoughts on implementing a custom Priority Queue in TS

LC 1046 My two cents: Each push and pop requires a rearrangement of the existing elements, it's almost like the priority queue is a living organism which evolves / devolves it self to maintain the order of the elements. Swap,…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

LC 1046






My two cents:




  1. Each push and pop requires a rearrangement of the existing elements, it's almost like the priority queue is a living organism which evolves / devolves it self to maintain the order of the elements.

  2. Swap, BubbleUp, & BubbleDown are the methods doing the main lifting. Here, swap is the simple swap operation

    const temp: T = this.heap[i];

    this.heap[i] = this.heap[j];

    this.heap[j] = temp


  3. The this.compare dependency injection is the soul of the code here. It is the same deciding factor which is used in sorting elements in an array. number < 0, number = 0 & number > 0

    where number is the result of a-b or b-a.




bubbleUp and bubbleDown ensure the rearrangement which is required to maintain the order of the elements,

bubbleDown refers to the Pop operation, and bubbleUp refers to the push operation. This is because how they are implemented in the custom heap inside the CustomPriorityQueue class.






Complexity




  • Time complexity:
    O(N * log(N));
    explanation : Push, Pop has log(N) and Stones array traversal has N.

  • Space complexity:
    O(N) for additional priority queue.






Code






function lastStoneWeight(stones: number[]): number {
const PQ = new CustomPriorityQueue<number>((a, b) => b-a);
for (let i of stones) {
PQ.push(i);
}
while(PQ.size() > 1){
const y: number = PQ.pop();
const x: number = PQ.pop();
if(y>x){
PQ.push(y-x);
}
}
// console.log(PQ);
return PQ.isEmpty() ? 0 : PQ.peak();
};

class CustomPriorityQueue<T> {
private heap: T[] = [];
private compare: ((a: T, b: T) => number);

constructor(compare: (a: T, b: T) => number) {
this.compare = compare
// this.heap = [];
}

public size(): number {
return this.heap.length
}
public isEmpty(): boolean {
return this.size() === 0;
}
public peak(): T | undefined {
return this.heap[0]
}
private swap(i: number, j: number): void {
const temp: T = this.heap[i];
this.heap[i] = this.heap[j];
this.heap[j] = temp
}
public push(value: T): void {
this.heap.push(value);
this.bubbleUp(this.size() - 1);
}
private bubbleUp(index: number): void {
while (index > 0) {
let parentIndex: number = Math.floor((index - 1) / 2);
if (this.compare(this.heap[parentIndex], this.heap[index]) < 0) break;
this.swap(parentIndex, index);
index = parentIndex
}
}
public pop(): T | undefined {
if (this.isEmpty()) return undefined;
const top: T = this.heap[0];
const bottom: T = this.heap.pop();
if (!this.isEmpty() && bottom !== undefined) {
this.heap[0] = bottom;
this.bubbleDown(0);
}
return top;
}
private bubbleDown(index: number): void {
const length: number = this.size();
while (true) {
let leftChildIndex: number = 2 * index + 1;
let rightChildIndex: number = 2 * index + 2
let indexOfSmallestOrLargest: number = index;

if (leftChildIndex < length && this.compare(this.heap[leftChildIndex], this.heap[indexOfSmallestOrLargest]) < 0) {
indexOfSmallestOrLargest = leftChildIndex;
}
if (rightChildIndex < length && this.compare(this.heap[rightChildIndex], this.heap[indexOfSmallestOrLargest]) < 0) {
indexOfSmallestOrLargest = rightChildIndex;
}
if (indexOfSmallestOrLargest === index) break;

this.swap(index, indexOfSmallestOrLargest);
index = indexOfSmallestOrLargest
}
}

}


Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Thoughts on implementing a custom Priority Queue in TS

Thematisch verwandte Begriffe: Thoughts, implementing, custom, Priority · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-94097 | A vulnerability was determined in Netcore NBR200V2 1.3.241127.071246. Th…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick