leetcode Question: Happy Number

Happy Number

Write an algorithm to determine if a number is "happy".
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
Example: 19 is a happy number
  • 12 + 92 = 82
  • 82 + 22 = 68
  • 62 + 82 = 100
  • 12 + 02 + 02 = 1

Analysis:


This problem is not difficult, just be careful with the terminating condition. In my answer, I use a set to store the previous numbers in each round. If current number is in this set, then this number cannot be "happy" since there must have an endless loop.

In python, list has the "in" operation to check the existence of individual member, in C++ I used a unordered_set from STL, and used "find" operation to check the element.


Code(C++):

class Solution {
public:
    bool isHappy(int n) {
        int res = 0;
        unordered_set<int> hist;
        
        while(true){
            if (n==1) return true;
            
            while (n > 0){
                res += (n%10)*(n%10);
                n = n/10;
            }
            
            if (hist.find(res) != hist.end()){
                return false;
            }else{
                hist.insert(res);
                n = res;
                res = 0;
            }
        }
    }
};

Code(Python):

class Solution:
    # @param {integer} n
    # @return {boolean}
    def isHappy(self, n):
        hist = []
        res = 0
        while 1:
            if n==1:
                return True
            while n > 0:
                res += (n%10) * (n%10)
                n = n/10
            if res in hist:
                return False
            else:
                hist.append(res)
                n = res
                res = 0
        

4 comments:

  1. interesting thing is that all loop end up with 4 - so i just checked if the sequence has a 4 anywhere. And it passed! total fluke :P !

    ReplyDelete
  2. Hp muadil toner kartuşu, orijinal ürün yerine farklı bir firma tarafından üretilmiş, aynı vazifeyi yapabilmesi için tasarlanmış fiyatı orjinal tonerlere göre daha ucuz eşdeğer kartuşlara verilen isimdir.
    Yan sanayi toner adıyla da bilinen bu ürünler genellikle çin malı ithal yazıcı toneri kartuşlarıdır.
    Orijinal yazıcı kartuşu muadili ürünlerde kalite ve fiyat standardı bulunmaz, markasız olarak ithal edilen edilen ürünler satıcı firmaların koydukları kutuların üzerinde yer alan isimlerde markalaşmış olsa dahi markaların tescili olmadığı gibi, kutu üzerinde ithalatçı firmaya ait bilgi yer almaz.
    Muadili oldukları markayla ilişkisi olmayan yan sanayi veya eşdeğer kartuşlar, üreticilerine ödenen para ile doğru orantılı kaliteye sahiptirler.
    Bu nedenle ucuz fiyat ile satılan ürünlerde kalite çizgisi kalitesiz toner dolumu yapan toner dolum merkezlerinin ürettikleri kartuşlardan dahi kalitesiz kartuşlara rastlanması doğaldır.

    hp muadil toner

    ReplyDelete
  3. İşin ilginç yanı googlede ilk sayfa garantili seo hizmeti adı altında verilmiş reklamlardı, ilgili reklamları veren uzmanların kendi internet siteleri google sıralamalarında acınacak durumdaydılar.

    Söküğünü dikmekten aciz terzileri görünce işin nasıl yapılması gerektiğini araştırmayı görev edindik. Yaptığımız araştırmalar neticesinde arama motoru optimizasyonu adı verilen işlemler sinsilesinin yalnızca kullanıcılara doğru bilgi verilmesinden geçtiğini gördük.

    Arama motorlarının gayesi aranan konu hakkında doyurucu bilgilere sahip siteleri öncelikli göstererek kullanıcıların arama motorundan yararlanmalarını sağlamak, fayda sağlayan kullanıcılar aradığını buldukları sürece ilgili motorları kullanmaya devam edeceklerinden, güvenilir sonuçlarla sürekli kullanılır hale gelmesidir.

    Sonuçta arama motoru optimizasyonu doğru, güvenilir bilgiler verilmesi, verilen bilgilerin kullanıcılarının işine yarayarak düzgün başvuru kaynağı haline gelmesidir.

    Googlede birinci sayfa garantili çalışmalar yaptığını iddia eden birçok uzmanın ilgili siteyi yükseltmeye yönelik kandırmaca uygulamalarla kısa süreliğine önemli mesafeler alsa dahi, neredeyse insan kadar düşünebilen sisteme sahip programlar kullanan google kötü niyetle haksız yere üst sıralara çıkan web sitelerini filitreye alarak eski bulundukları sıradan dahi aşağılara göndermektedir.

    Yukarıda anlattığımız konuları öğrenmek bir yılımızı aldı, akıllı olduğunu düşündüğümüz webmaster arkadaşımıza seo uyumlu ucuz fiyatlı site tasarımı yaptırdık, webmaster arkadaşımız tarafından hazırlanan siteye işimiz hakkında bildiklerimizi doğru biçimde yansıttık, şimdilerde ilgili sitemizde yer alan ürünlerin büyük bölümü arandığında ilk sayfada kolayca bulunuyor.
    birinci sayfa

    ReplyDelete