Zillow面试题汇总(1)

实现三叉树的 insert() 和 delete()函数 (2017 OA)


def delete(self, root, value):

    if root:

        if value < root.val:

            root.left = self.delete(root.left, value)

        elif value > root.val:

            root.right = self.delete(root.right, value)

        else:

            if root.mid:

               root.mid = self.delete(root.mid, value)

           elif root.right:

               min = self.find_min(root.right)

               root.val = min

               root.right = self.delete(root.right, min)

            else:

                root  = root.left

    return root


def find_min(self, node):

    while node.left:

        return self.find_min(node.left)

    return node.val

String to long (2017 OA)

    def string_to_long(self, str):
        if len(str) == 0: return 0
        res = i = 0
        sign = 1
        while str[i] == ' ':
            i += 1
        if str[i] == '+' or str[i] == '-':
            sign = 1 if str[i] == '+' else -1
            i += 1
        while i < len(str) and str[i].isdigit():
            res = res * 10 + ord(str[i]) - ord('0')
            i += 1
        return min(max(res * sign, -2**63), 2**63 - 1)

Lowest Common Ancestor (2016 一面)

def LCA(self, root, p, q):
    if p.val < root.val and q.val < root.val:
        self.LCA(root.left, p, q)
    elif p.val > root.val and q.val > root.val:
        self.LCA(root.right, p, q)
    return root

给一个数, 判定他的二进制表示是否是一个palindrome

比如3的二进制是11, 就是palindrome

def solution(self, number):
#首先把数转换成二进制
    number = int("{0:b}".format(number))
#然后判断palindrome
    if number == 0 or (number != 0 and number % 10 == 0): return False
    res = 0
    while res < number:
        res = res * 10 + number % 10
        number /= 10
    return res == number or res / 10 == number

给了一个int数组, 里面几乎包括了32bit能表示的所有数, 但是missing了几个数字, 你要把这些数字找出来, 用最少的内存.

异或运算。这个讲的比较详细。http://blog.csdn.net/smile_watermelon/article/details/45194901

Blackjack问题, 给一堆牌, 返回尽可能接近21点的组合. 因为A可以表示1或者11

应该是用dp吧,不过没有找到原题。

给一个字符串, 返回第一个出现了一次的字母. (2016)

O(N)解法

import string
class Solution(object):
    def firstUniqChar(self, s):
        a = len(s)
        m = 0
        result = []
        while m < a:
            for i in string.ascii_lowercase:
                if s.count(i) == 1:
                    result.append(s.find(i))
                if i in s:
                    m += 1
        if not result:
            return -1
        return min(result)

Word Break (LC 139)

给一个字符串, 还有一个字典, 返回这个字符串否被字典里的单词分割

Validate Binary Search Tree (LC 98)

还没做过

Plus One (LC 66)

class Solution(object):
    def plusOne(self, digits):
        i = len(digits) - 1
        while i >= 0:
            if digits[i] == 9:
                digits[i] = 0
                i -= 1
            else:
                digits[i] += 1
                return digits
        digits[0] = 1
        return digits + [0]

Given an array of integers, find a partition index so that sum of all integers on the left equals sum of all integers on the right. e.g. [1, 2, 1] returns 1, [1, 2, -4, 8, 5, 9, -2] returns 4

保持一个left_sum 和 right_sum, 然后遍历数组,若果当前位置两者相等就return,否组左边加当前,右边减当前

Fibonacci 数列之和

solution有四种,递归,dp包括滚动数组,线代,数学归纳法的方程

two sum (2016 一面)

leetcode 1

给一个grid走迷宫,有障碍物,四个方向随便走,要左上角到右下角的最短路径

bfs/dfs

Hashtable和BST的区别

http://bookshadow.com/weblog/2015/04/02/advantages-of-bst-over-hash-table/
哈希表支持在Θ(1)时间内完成下列操作:哈希表支持在Θ(1)时间内完成下列操作:1) 查找 2) 插入 3) 删除

对于自平衡的二叉搜索树,比如红黑树(Red-Black Tree),平衡二叉树(AVL Tree),伸展树(Splay Tree)等,上述操作的时间复杂度是O(Logn)。

因此对于常用操作哈希表似乎完胜BST。那么我们在什么时候应该选择BST而不是哈希表,BST的优势何在。下面是BST的几项比较重要的优势。

我们只需通过中序遍历BST即可获得排好序的key列表。而这并非哈希表的自然操作,需要额外的工作才可以实现。

使用BST可以很容易地执行顺序统计,找出最接近的最小和最大元素,执行范围查询。像排序一样,这些操作也不是哈希表的自然操作。

BST相较于哈希表更容易实现,我们可以很容易地实现自定义的BST。而要实现哈希表,我们一般需要依赖编程语言提供的库函数。

使用BST,所有的操作都可以确保在O(Logn)时间内完成,而对于哈希表, Θ(1) 是平均时间,对于某些特定的操作代价可能会比较高,尤其是当表的大小需要调整时。

Difference between Thread and Process

Both processes and threads are independent sequences of execution. The typical difference is that threads (of the same process) run in a shared memory space, while processes run in separate memory spaces.

一个array(Sorted, 好像题没说,不过最好问一下), 一个threshold,找出所有比shreshold大或者等于threshold的subarray的median值,返回double值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341

推荐阅读更多精彩内容