Kodlama sırasında , büyük girdiler için bazı tam sayı taşma durumlarıyla karşılaşabiliriz. Bugün, problem çözme sırasında karşılaştığım bu tür iki senaryoyu tartışacağım.
Diyelim ki size sıralı bir tamsayı dizisi verildiğini ve bu dizide belirli bir elemanı bulmanız istendi. Dizi sıralandığından, hedef elemanı O (logN) zamanında bulmak için ikili arama algoritması uygulayabiliriz; burada N, giriş dizisinin boyutudur.
İkili aramanın temel fikri , diziyi her ikiye böldüğümüzde, orta dizini bulduğumuzda ve hedef öğeyi orta öğe ile karşılaştırdığımızda. Eğer hedef eleman ortadaki elemandan büyükse, bu durumda orta dizinin bir sonraki dizininden başlayarak dizinin yalnızca sağ kısmını aramamız gerekir. Hedef eleman orta elemandan küçükse, dizinin orta dizinden önce biten sol kısmını aramamız gerekir.
Öyleyse soru orta endeksi nasıl bulacağımız. Çok basit; iki noktayı korumamız gerekiyor: başlangıç ve bitiş; başlangıç işaretçisi 0 ile başlatılır ve bitiş işaretçisi N-1 ile başlatılır (N, dizinin boyutudur). Dolayısıyla, orta dizini bulmak için kullanacağımız formül:
mid = (başlangıç + bitiş) / 2.
İlk bakışta bu formül masum görünebilir, ancak bu formüle yakından bakarsak ilk kısımda iki tam sayı eklediğini görebiliriz. İki tam sayı eklediğimiz için, bu iki sayı çok büyükse tamsayı taşması olasılığı vardır. Bu nedenle bu formülden kaçınmalıyız. Bunun yerine orta endeksi hesaplamak için aşağıdaki formülü kullanabiliriz:
orta = başlangıç + (bitiş-başlangıç) / 2;
Açıkça " (bitiş-başlangıç) / 2", " bitiş " den küçüktür ve bu formül, büyük başlangıç ve bitiş değerleri için tamsayı taşmasına neden olmayacaktır .
Diyelim ki bize bir 2D tamsayı dizisi verildi ve diziyi her satırın ikinci değerine (veya her 1D dizisinin ikinci öğesine) göre artan sırada sıralamamız gerekiyor. Java'da diziyi sıralamanın bir yolu şöyledir:
Arrays.sort (arr, (a, b) -> a [1] -b [1]);
Yukarıdaki kod hemen hemen tüm girişler için iyi çalışıyor, ancak giriş dizisi şöyle görünüyorsa: [[-2147483646, -2147483645], [2147483646,2147483647]]
Bu durumda, yukarıda belirtilen koda göre "2147483647" yi "-2147483645" den çıkarıyoruz
veya -2147483645–2147483647 = -4294967292; bu da tamsayı taşmasına neden olur.
Yukarıdaki kodu biraz değiştirirsek, tamsayı taşmasını önleyebiliriz. Değiştirilen kod aşağıdaki gibidir:
Arrays.sort (dizi, (a, b) -> a [1] <b [1]? -1: 1);
Sonuç olarak, iki tam sayı arasında bir toplama veya çıkarma işlemi yaptığımızda, büyük girdi durumları hakkında düşünmemiz ve tamsayı taşmasını önlemek için alternatif bir yaklaşım bulmaya çalışmamız gerektiğini söylemek isterim.
Programlama dilleri arttıkça, gizli özellikler görünmeli ve geliştiriciler tarafından asla ortaya çıkmayan çerçeveler makul uygulamaya taranmalıdır. Bu özelliklerin bir kısmı, ifade figürleri olarak başlarının yanında yer alır ve dilde kabul gören tartışma haline gelirken, fırsatlar resimlerin düşmanlarına dönüşür ve dil yerleşik alanının donuk köşelerine çevrilir.
Wandera'da Kubernetes ve Java'yı daha da çok seviyoruz. Mikro hizmetlerimizin çoğu Java ile yazılmıştır ve çoğu dünya çapında çok sayıda Kubernetes kümesinde çalışır.
Pragmatik Programcı ilk olarak 1999'da yayınlandı ve o zamandan beri tüm zamanların en iyi programlama kitabı seçildi. Yazarlar Andy Hunt ve David Thomas, Agile Manifesto'nun orijinal yazarları arasındaydı ve bazı ciddi referanslara sahipler.
Saldırganların herkese açık GraphQL arabiriminizi kullanarak sitenizi nasıl kazıyabileceğini veya hizmet reddi saldırıları gerçekleştirebileceğini öğrenin. Bunu dört yoldan biriyle yapabilirler: yürütmek için tek bir büyük sorguyu dikkatlice oluşturarak, ilgili verileri getirebilecek çok sayıda paralel sorgu yazarak, arka arkaya çok sayıda sorgu göndermek için toplu istekleri kullanarak ve son olarak çok sayıda istek göndererek.
Teknoloji endüstrisindeki bir pozisyon için mülakat yaparken, herhangi bir teklif değerlendirilmeden önce genellikle en az üç tur mülakattan geçeceksiniz. Mermiler genellikle şuna benzer: Eğer öyle düşünüyorsan, yanılıyorsun.
Harika geliştiriciler yapan teknik olmayan şeyler Bir süredir bu makaleyi yazmayı erteliyorum - yazmak için hiç nitelikli hissetmedim. Bugün onu yazma zamanının geldiğini düşündüm.
Anthony Mackie, New Orleans'ta evdeydi, kızarmış balık ve ailesinin Güney mutfağından başka bir şey yemiyordu.
'Million Dollar Listing New York'tan Tyler Whitman daha fazla risk alır, zevke gider ve kendisini bazı rahatsız durumlarda bulur.
'Yazlık' yapımcıları gerçekten Luke Gulbranson'a Hannah Berner'den onunla Minnesota'ya gitmesini istemesini söylediler mi? Oyuncular şaşkına döndü.
Tiffany Moon ve Brandi Redmond, 'RHOD'da iniş çıkışlar yaşadı ve doktor, rol arkadaşıyla arkadaşlığının şu anda nerede olduğunu açıklıyor.
Dünyanın dört bir yanındaki şehirler yolcu gemisi trafiğini yasaklıyor veya sınırlandırırken, eleştirmenler bunun sonucunda ortaya çıkan gelir kaybına meydan okuyor. Şehirler neden gitmelerini istiyor ve herkesi mutlu etmenin bir yolu var mı?
Bir havuz endüstrisi uzmanının "poolmageddon" dediği şeyi yaratmak için bir araya gelen mükemmel bir koşullar fırtınası. Neden? Çünkü şu anda ABD'de büyük bir klor eksikliği var. Havuz sezonunu nasıl etkileyecek?
Metan emisyonları yıllardır hızla artıyor. Birleşmiş Milletler tarafından kısa süre önce yayınlanan bir rapor, bunun çok kötü bir haber olduğunu söylüyor ve iklim değişikliğini yavaşlatmak için genel metan emisyonlarının düşürülmesi kritik önem taşıyor.
Başkan Joe Biden, altyapı planının 80 milyar dolarlık kısmını ABD demiryolu sistemine, yani Amtrak'a ayırdı. Ancak en büyük engel Kongre'yi ve yolcuları uçağa almaktır.
Çok iyi koştu ..
Parla, seni deli Chungo. Çoğu çevrimiçi oyunda olduğu gibi, Final Fantasy XIV de ondan çıkardığınız şeydir.
Sanki geçmişte kalmış gibi yeniden çizmekten bahsediyoruz, ama Amerika'nın çoğu ırkçı sistemi gibi o da gerçekten ortadan kalkmadı - sadece evrim geçirdi. Indianapolis'teki bir Siyah ev sahibi, eviyle ilgili bir değerlendirmenin 100.000 $ artmasının ardından ayrımcılık şikayetinde bulundu.
Bunu Louvre'a koyun korkaklar. Sporcular tuhaftır - ben de dahil.
Vanessa Hudgens, şu anki erkek arkadaşı Cole Tucker ile tanışması hakkında konuştu ve bir Zoom meditasyon grubundan sonra ona mesaj atarak ilk hareketi yaptığını açıkladı.
Küçük Deniz Kızı yıldızı Halle Bailey, bir kedisi olduğunu ve adını Poseidon olarak adlandırdığını açıkladı
Kathleen Folbigg, 2003 yılında çocuklarını - Caleb, Patrick, Sarah ve Laura - her birini ikinci doğum günlerinden önce boğmaktan suçlu bulundu.
Country şarkıcısı Drew Baldridge ve nişanlısı Katherine Kraus, Cuma günü Tennessee'de düğümü bağladılar.