SORU
20 ŞUBAT 2012, PAZARTESİ


Bir numara verilir, orijinal sayı basamağı aynı olan bir üst numarasını bulun

Ben sadece bir görüşme ve hemen hemen sıfır röportaj sorumu ilerleme bombaladı. Herkes bunu nasıl haber ver? Online arama denedim ama bir şey bulamadı:

Bir dizi göz önüne alındığında, tamamen aynı olan bir üst numarasını bulun orijinal sayı basamak ayarlayın. Örneğin: 38276 getiri 38627

Başlamak için olanlar basamak daha ilk basamak (sağ) dizini bularak istedim. Sonra alt son basamak, bir sonraki en büyük sayı ile aynı sayıdan oluşuyor, ama sıkışmış gibi döndürmek istiyorum.

Görüşmeci ayrıca basamaklı bir zamanda bir takas etmeye önerdi, ancak algoritma çözemedim ve sadece 20-30 dakika boyunca ekrana baktı. Söylemeye gerek yok, iş aramaya devam etmek zorunda kalacağım sanırım.

edit: neye mal olursa olsun, görüşmelerin bir sonraki turu için davet edildim

CEVAP
20 ŞUBAT 2012, PAZARTESİ


O(n) n basamak sayısı olduğu) böyle olabilir

Sağdan başlayarak, Sol-Sağ basamak-basamak daha küçük olduğunu ilk basamak çifti böyle bulursun. Bu bıraktığı basamaklı bir bakın bakalım "basamak-x". Bul-x basamak basamak-sol, sağ ve hemen sol yerleştirmek için daha küçük sayı büyük rakam-x. Son olarak, zaten onlar bu yana artan kalan sayılar sıralama -azalansipariş, tüm yapmanız gereken onları ters(kaydetmek için O(n) doğru yerde yerleştirilebilir hangi basamak-x).

Bir örnek bunu daha açık hale getirecektir:

123456784987654321
start with a number

123456784 987654321
         ^the first place where the left-digit is less-than the right-digit is here.  
         Digit "x" is 4

123456784 987654321
              ^find the smallest digit larger than 4 to the right

123456785 4 98764321
        ^place it to the left of 4

123456785 4 12346789
123456785123446789
         ^sort the digits to the right of 5.  Since all of them except 
         the '4' were already in descending order, all we need to do is 
         reverse their order, and find the correct place for the '4'

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • ThisWeekYT

    ThisWeekYT

    14 Mart 2013