San Jose各个房价 <1.5m 区域买房总结

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投
内推多家公司面试
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
把贵司招聘信息放这里
查看: 3987|回复: 25
收起左侧

google面筋

[复制链接] |试试Instant~ |关注本帖
wendy33 发表于 2015-2-16 07:58:52 | 显示全部楼层 |阅读模式

2015(1-3月) 码农类General 硕士 全职@Google - 校园招聘会 - 技术电面  | Other |

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
白人小哥,简单介绍了自己的组然后开始问问题。
第一题:给一个int array. 此array先是单调递增到某最大值,然后单调递减。 先问怎么找最小值,再问怎么求最大值,并写了求最大值的代码,二分法不用考虑最值在两端的corner case。
第二题:给一个int array,里面所有element都是unique的。让写一个shuffle函数令所有element都不在原来的位置上。比如 {1, 2, 3} -〉{2,3,1}

bless! 希望有下一轮。

评分

3

查看全部评分

joy9088 发表于 2015-2-16 12:48:32 | 显示全部楼层
先单调递增再单调递减,最小值应该就在2个端点吧,不是左端点就是右端点。而最大值的话可以用二分法,对吗?
回复 支持 反对

使用道具 举报

joy9088 发表于 2015-2-16 12:54:00 | 显示全部楼层
第二题可以采用环状形式,每一个往后错一个位置吗?如原1号数据放到2号,原2号放到3号,原3号放到4号,。。。原n-1号放到n位置,原n位置的元素放到1号,用一个循环语句,能行吗?
回复 支持 反对

使用道具 举报

skipper 发表于 2015-2-16 12:59:39 | 显示全部楼层
第二题没有其它限制么?
比较直观的方法是数组内的元素各自左移一位就行了
回复 支持 反对

使用道具 举报

houqingniao 发表于 2015-2-16 13:18:18 | 显示全部楼层
perfect shuffle 再比较是不是自己的index 这样可行吗
回复 支持 反对

使用道具 举报

Linzertorte 发表于 2015-2-16 14:09:37 | 显示全部楼层
这个标准的shuffle算法就可以。
for(int i=v.size()-1;i>=1;i--){
    swap(v[i],v[random_between(0,i-1)]);. 围观我们@1point 3 acres
}
回复 支持 反对

使用道具 举报

zhenggao1986 发表于 2015-2-16 15:18:47 | 显示全部楼层
数组里面可以有连续重复的数字么?比如{2, 2, 2, 3, 3, 1, 1, 1}
如果没有连续重复则可以用二分法做,否则不行啊。比如下面的例子5.

public class Test {
       
private static int findMaxHelper(int[] array, int begin, int end) {
        if (end - begin == 1) return Math.max(array[begin], array[end]);
        if (array[begin] > array[begin + 1]) return array[begin]; // descending
        if (array[begin] < array[begin + 1] && array[end - 1] < array[end]) return array[end]; // ascending
        int mid = begin + ((end - begin) >> 1);
        if (array[mid] > array[mid + 1]) return findMaxHelper(array, begin, mid);. From 1point 3acres bbs
        else return findMaxHelper(array, mid, end);
}
       
public static int findMax(int[] array) {. 一亩-三分-地,独家发布
        return findMaxHelper(array, 0, array.length - 1);
}. From 1point 3acres bbs

public static void main(String[] args) {
        int[] array1 = {1, 2, 3, 4, 5, 6, 5, 4, 3};
        int[] array2 = {3, 4, 5, 6, 5, 4, 3, 2, 1};
        int[] array3 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int[] array4 = {9, 8, 7, 6, 5, 4, 3, 2, 1};
        int[] array5 = {2, 2, 2, 3, 2, 2, 2, 1, 1};
        System.out.println(findMax(array1));
        System.out.println(findMax(array2));
        System.out.println(findMax(array3));
        System.out.println(findMax(array4));
        System.out.println(findMax(array5));
}
}
. 一亩-三分-地,独家发布
输出
.1point3acres网6. more info on 1point3acres
6
9
9
2
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

zhenggao1986 发表于 2015-2-16 15:21:12 | 显示全部楼层
第二题,数组整体shift任何一数,所有的数就都不在原来位子上了呀
回复 支持 反对

使用道具 举报

zhenggao1986 发表于 2015-2-16 15:48:39 | 显示全部楼层
import java.util.Random;

public class Test {

public static void swap(int[] array, int i, int j) {
        if (i == j) return;
        array[i] ^= array[j];
        array[j] ^= array[i];
        array[i] ^= array[j];
}

public static void shuffle(int[] array) {. 留学申请论坛-一亩三分地
        Random r = new Random();
        for (int i = 0; i < array.length - 1; ++i)
                swap(array, i, r.nextInt(array.length - i - 1) + i + 1);
}

. more info on 1point3acrespublic static void print(int[] array) {
        for (int i : array)
                System.out.print(i + " ");
        System.out.println();
}
. 留学申请论坛-一亩三分地
public static boolean test() {
        for (int i = 0; i < 10000; ++i) {
                int[] arrayTest = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
                shuffle(arrayTest);
                for (int j = 0; j < arrayTest.length; ++j)
                        if (arrayTest[j] == j) return false;
        }
        return true;
}

public static void main(String[] args) {
        int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        print(array);
        shuffle(array);
        print(array);. visit 1point3acres for more.
        System.out.println(test());.1point3acres网
}
}

运行结果
0 1 2 3 4 5 6 7 8 9 .留学论坛-一亩-三分地
9 7 5 8 0 3 1 2 4 6
true
回复 支持 反对

使用道具 举报

 楼主| wendy33 发表于 2015-2-16 23:06:30 | 显示全部楼层
joy9088 发表于 2015-2-16 12:48
先单调递增再单调递减,最小值应该就在2个端点吧,不是左端点就是右端点。而最大值的话可以用二分法,对吗 ...

恩恩,是的
回复 支持 反对

使用道具 举报

 楼主| wendy33 发表于 2015-2-16 23:08:30 | 显示全部楼层
Linzertorte 发表于 2015-2-16 14:09
这个标准的shuffle算法就可以。
for(int i=v.size()-1;i>=1;i--){. Waral 博客有更多文章,
    swap(v,v[random_between(0,i-1)]) ...

嗯嗯,我也是这么想的
回复 支持 反对

使用道具 举报

 楼主| wendy33 发表于 2015-2-16 23:09:25 | 显示全部楼层
joy9088 发表于 2015-2-16 12:54. more info on 1point3acres
第二题可以采用环状形式,每一个往后错一个位置吗?如原1号数据放到2号,原2号放到3号,原3号放到4号,。。 ...

当时面试官说要尽量randomize哈,忘了强调这一点
回复 支持 反对

使用道具 举报

 楼主| wendy33 发表于 2015-2-16 23:09:46 | 显示全部楼层
skipper 发表于 2015-2-16 12:59
第二题没有其它限制么?
比较直观的方法是数组内的元素各自左移一位就行了

当时面试官说要尽量randomize哈,忘了强调这一点
回复 支持 反对

使用道具 举报

 楼主| wendy33 发表于 2015-2-16 23:09:56 | 显示全部楼层
houqingniao 发表于 2015-2-16 13:18
perfect shuffle 再比较是不是自己的index 这样可行吗
. more info on 1point3acres
当时面试官说要尽量randomize哈,忘了强调这一点
回复 支持 反对

使用道具 举报

 楼主| wendy33 发表于 2015-2-16 23:12:00 | 显示全部楼层
zhenggao1986 发表于 2015-2-16 15:18
数组里面可以有连续重复的数字么?比如{2, 2, 2, 3, 3, 1, 1, 1}
如果没有连续重复则可以用二分法做,否则 ...
. 1point3acres
第一题的话是可以有重复,但是重复的值不能连在一起,所以是严格单调增加接着严格单调递减. 向面试官clarify,他说就只考虑这种情况.
第二题 当时面试官说要尽量randomize哈,忘了强调这一点
回复 支持 反对

使用道具 举报

 楼主| wendy33 发表于 2015-2-16 23:13:53 | 显示全部楼层
抱歉抱歉, 帖子发的太不严谨啦。希望有改进的机会.呵呵....
回复 支持 反对

使用道具 举报

joy9088 发表于 2015-2-17 05:00:04 | 显示全部楼层
谢谢分享哈
回复 支持 反对

使用道具 举报

碇真嗣 发表于 2015-2-17 05:28:40 | 显示全部楼层
多谢LZ分享!
回复 支持 反对

使用道具 举报

mengxiangjia 发表于 2015-2-17 07:11:49 | 显示全部楼层
zhenggao1986 发表于 2015-2-16 15:18
数组里面可以有连续重复的数字么?比如{2, 2, 2, 3, 3, 1, 1, 1}
如果没有连续重复则可以用二分法做,否则 ...

因为是单调递增递减,应该就没有重复了吧
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-26 20:29

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表