Tricky Google interview question

前端 未结 21 1675
花落未央
花落未央 2020-12-22 15:39

A friend of mine is interviewing for a job. One of the interview questions got me thinking, just wanted some feedback.

There are 2 non-negative integers: i and j. Gi

21条回答
  •  独厮守ぢ
    2020-12-22 16:11

    This is very easy to do O(n) in functional languages. The list l of 2^i*5^j numbers can be simply defined as 1 and then 2*l and 5*l merged. Here is how it looks in Haskell:

    merge :: [Integer] -> [Integer] -> [Integer]
    merge (a:as) (b:bs)   
      | a < b   = a : (merge as (b:bs))
      | a == b  = a : (merge as bs)
      | b > a   = b : (merge (a:as) bs)
    
    xs :: [Integer]
    xs = 1 : merge (map(2*)xs) (map(5*)xs)
    

    The merge function gives you a new value in constant time. So does map and hence so does l.

提交回复
热议问题