Quora 店面挂经

社招的,网上投的简历

求一个set里数字组合的sum是否能够等于target 类似combination sum 数字不重复使用 都是unique。 传统backtracking做法不能使面试官满意, 所以得优化。 自己没有优化成功, 最后面试官给了提示, 可以把数组创建成一棵树,然后类似于path sum的解法。
难点如何在于创建树
【1, 3, 4, 7】 求target 10 是否可以组合成功 3 + 7 = 10 true

我用的dfs求的 但是面试官不满意 要求优化 因为dfs复杂度太高 最后给的hint是建立tree 具体如何建立这个tree 时间太久忘了 但印象中跟path sum iii 有点像

我是new grad,在读博士,内推的
报个店面面经

1.问了ios基础知识比如 frame和bounds区别 如何使用webview ARC是什么
2.蠡口的 石斯 follow up是改进成最快running time

面的是 contractor

先给个sorted array [1, 1, 2, 2, 2, 2, 2,3, 3] 求 最大值 选择的元素差值必须大于1 或者 全部元素都一样 比如这个例子输出为10 因为 [2, 2, 2, 2, 2]
求和的最大值
可以选择相差超过1的元素组成,或者全部相等的元素组成
follow up 这个 array不是 sorted 怎么办? 对乱序的数组,不给用 sort function 反正就是不许先sort
借助hashmap存储key和频率,再借助一个heap记录从小到大元素
遇到新元素,同时放入heap和hashmap,如果不是新元素,就只修改hashmap的频率遍历一遍数据之后用heap进行和sorted array差不多的操作
整体时间复杂度取决于输入数据的元素种类k。
klogk+n

LZ 估计跪在 follow up上了。哎 还是刷题不够,不会举一反三。
555555~~~~