Skip to content

Instantly share code, notes, and snippets.

@yusufpapurcu
Created December 24, 2023 15:08
Show Gist options
  • Save yusufpapurcu/1f72655f2d78cd83328fb88a398c0f57 to your computer and use it in GitHub Desktop.
Save yusufpapurcu/1f72655f2d78cd83328fb88a398c0f57 to your computer and use it in GitHub Desktop.
erdem psuedo solution
while (yiginDizi.size() != 1){
kopyaYiginDizi // yigin dizisinin kopyasini aliyoruz
silinecekYiginIndeks; // her while turunda bir yigin silmemiz lazim
operasyonTuru = 0; // enKucuk > enBuyuk > enKucuk.... seklinde her tur otekine bakmamiz lazim
while (silinecekYiginIndeks == NULL) {
int enKucuk = INT_MAX; // klasik taktik, ilk iterasyonda degismesini garantilemek icin
int enBuyuk = INT_MIN;
int silinecekEleman = 0; // hangi yigindan eleman cikaracagimizin indeksi
for (kopyaYigin: kopyaYiginDizi){
if (yigin == NULL) { // null pointer yememek icin
continue;
}
// enKucuge bak
if (counter % 2 == 0) {
if (yigin->getir() < enKucuk) {
enKucuk = yigin->getir();
silinecekEleman = yigin->yiginNo - 1; // yiginNo degiskeni ekledim yigin objesine. Indeks + 1;
}
}
else {
if (yigin->getir() > enBuyuk) {
enBuyuk = yigin->getir();
silinecekEleman = yigin->yiginNo - 1;
}
}
}
kopyaYiginlar[silinecekEleman]->cikar();
if (kopyaYiginlar[silinecekEleman]->bosMu()) { // ilk biten yigini ana diziden silecegiz
silinecekYiginIndeks = &silinecekEleman;
}
++counter;
}
delete yiginlar[*silinecekYiginIndeks];
}
// bu while'dan cikinca yigin listesinde sadece 1 eleman kalacak sonuc olarak.
// geriye kalan tek sey ASCII ve yigin no ekrana basmak
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment