L家面经

1. 实现一个Hashmap,考虑多线程环境;


2.given the list {{1,1},2,{1,1}},返回10……因为,(four 1's at depth 2, one 2 at depth 1). 给定 {1,{4,{6}}} ,返回27……因为, (one 1 at depth 1, one 4
at depth 2, and one 6 at depth 3)

思路:一个变量表示深度,遇到{累加,}减一,遇到数则乘以当前深度,然后累加到和;


3. 给2个string,判断是否可以map. say (foo, abb) 这2个string是可以map的, f->a
, o->b. say (foo, sdf),是不可以map的……返回bool值

思路:首先检查两个字符串的长度是否相同,然后用一个map<char,char>记录,扫描第一个字串如S的字符,如当前字符在map中有,则检查第二个字串对应位置的字符与map中的字符是否相同;如果map中没有,则存入;


4. 给一个string,每10个letter一组,输出所有出现次数超过一次的strings with 
length of 10. 一定要用rolling hashing做


5. 给一个数组,输出连续元素的最大和。

思路:简单的动态规划,consectiveSum=max(consectiveSum+curNum,curNum);ans=max(ans,consectiveSum)


6. 判断2个linkedlist是否在某一点会重合. O(1) space.

思路:首先检查两个链表长度s和t,S>t,然后长的个走(s-t)长度,开始两个指针同时扫描,判断是否有相等的时候(指向地址相等);


7. leetcode: Max Points on a Line

思路:还没在Leetcode上做过,枚举每两个点形成的斜率存入一个map<斜率,点数>即可,O(n2)扫描所有可能的直线,把两个点放入map对应的点数,最后每个斜率对应的点数除以2就是该斜率划过的点数;


8.给一个数组,输出连续元素的最大乘积。

思路:也是很常见的题,简单动态规划,但是要保留两个变量:positive=max(positive*a[i],negtive*a[i],a[i]),negtive=min(negtive*a[i],positive*a[i],a[i]),ans=max(ans,positive)


9.给一个数组,a(10, 2, 5)……输出一个数组, b(10, 50, 20)……b[i]是除了a[i]以外剩下a中所有元素的乘积……不准用除法.

思路:也是很常见,简单方法是一个front[i] =front[i-1]*a[i-1], back[i]=back[i+1]*a[i+1],最后ans[i]=front[i]*back[i]即可,更优化就是只开一个数组,顺着做front,扫描完再倒着做back[i],即得。


10.设计一个web calender,要考虑UI,后端,数据格式等;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值