注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
网上已经有很多Liveramp的面经了,我就不在赘述了~我遇到的是青蛙过河的那道题。分享出自己写的代码, 代码根据,二楼大神的bucket思路写的, 代码有bug, 需要的人自己再调试调试,我在做OA的时候,自己写了几个test case, 都过了。 但是大数据不没试过,可能挂就挂在考虑corner case不全上吧。其他两道题,就是问怎么给你同事解释你上面写的代码,如果你的同事知道题意, 但是不懂你写的代码什么意思。 然后就是why liveRamp。 这两题都没法分享经验了,就跟写作文似得,自己看着上吧。
主要思路: 根据数组大小创建 N = X/D 个bucket, 每个bucket里面的叶子是青蛙都可以达到的,因为bucket内部的距离小于D, 然后想要到X, 就需要建立N - 1次connection。
代码:
public static int frog(int[] num, int X, int D){ if(num[0] < D && num[0] > X){ return 0; } int N = (int) Math.ceil((double) X / D); // total bucket Number System.out.println("the total number of bucket: "+ N); Bucket[] bucket = new Bucket[N]; for(int i = 0; i < N; i++){ bucket[i] = new Bucket(1, 1); // create new bucket object } int count = 0; // must be equal to N - 1 Map<Bucket, Integer> map = new HashMap<Bucket, Integer>(); for(int i = 0; i < N; i++){ map.put(bucket[i], 0); } System.out.println("map size" + map.size()); for(int i = 0; i < num.length; i++){ int bucketNum = (int) num[i] / D; // if (map.containsKey(bucket[bucketNum])){
} class Bucket{ int min; int max; public Bucket(int min, int max){ this.min = min; this.max = max; } public boolean contains(int num) { return min <= num && max >= num; } } 求大神怒射大米,小弟快没米了,接下来还有别家的面试啊!谢谢各位大大。
|