[八我司] 介绍一下Uber tech stack和各个大组的情况

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 2347|回复: 11
收起左侧

linkedin的一个题,求解答

[复制链接] |试试Instant~ |关注本帖
ariesxiao 发表于 2016-8-28 12:02:51 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类General 硕士 全职@Linkedin - 内推 - 技术电面  | Other | 其他

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

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

x
其实就是leetcode上的题,求整数x的平方根,当时不该嘴贱问一句,结果是不是也要求整数
然后那个面试官说,她本来想的是结果也要求整数的,但看你这么问,那我们保留两位小数如何

本来直接就二分的,保留两位小数完全不知道怎么做了,就跟她扯牛顿迭代法。然后她说牛顿迭代法编程算法的东西太少了,都是数学,问我能不能用其他方法做,然后强行做二分,没做出来,不知道二分和保留两位小数怎么兼容

然后就跪了
dhldxy 发表于 2016-8-28 12:18:43 | 显示全部楼层
hmm,是不是还是一样用二分法?就是在比较的时候,
               if(abs(prod-x) <= 0.01){
                    return mid;
                }
                else if(prod-x > 0.01){
                    right = mid-1;
                }
                else{
                    left = mid+1;
                }
不是很确定。
.1point3acres网
补充内容 (2016-8-28 12:56):
发现错了。 mid - 1 和  mid + 1这样就不对了。
回复 支持 反对

使用道具 举报

阿满 发表于 2016-8-28 12:35:22 | 显示全部楼层
long x = x* 1000000 然后再用原来的2分
回复 支持 反对

使用道具 举报

 楼主| ariesxiao 发表于 2016-8-28 12:38:32 | 显示全部楼层
dhldxy 发表于 2016-8-28 12:18
hmm,是不是还是一样用二分法?就是在比较的时候,
               if(abs(prod-x)  0.01){
             ...

我之前做LEETCODE这个题的时候代码是这个,当时没想清楚怎么改成保留两位小数的情况. visit 1point3acres for more.
public class Solution {
    public int mySqrt(int x) {. 牛人云集,一亩三分地
        if (x<0)
        return -1;
        . visit 1point3acres for more.
        int start = 1;
        int end = x/2+1;
        int lastMid = 0;
        while (start<=end)
        {
            int mid = start+(end-start)/2;
            if (mid == x/mid)
            {
                return mid;
            }. Waral 博客有更多文章,
            else if (mid < x/mid)
            {
                lastMid = mid;
                start = mid + 1;
            }
            else-google 1point3acres
            {
                end = mid - 1;
            }
        }
        
        return lastMid;
        
    }
}
回复 支持 反对

使用道具 举报

 楼主| ariesxiao 发表于 2016-8-28 12:39:28 | 显示全部楼层
阿满 发表于 2016-8-28 12:35
long x = x* 1000000 然后再用原来的2分

这个乘以1000000是怎么得到的?
回复 支持 反对

使用道具 举报

b00901192 发表于 2016-8-28 14:28:12 | 显示全部楼层
我的想法是用 leetcode 原題的 binary search 可以求得小數點前的數字。接下來再做一次 binary search: 因為要求兩位 begin = 0.01, end = 0.99 剩下就跟原題ㄧ樣不斷逼近。
回复 支持 反对

使用道具 举报

阿满 发表于 2016-8-28 22:33:52 | 显示全部楼层
ariesxiao 发表于 2016-8-28 12:39 来源一亩.三分地论坛.
这个乘以1000000是怎么得到的?

sqrt(5) = 2.236xxxxx.留学论坛-一亩-三分地
sqrt (5000000) = 2236.xxxx
回复 支持 反对

使用道具 举报

青之帝 发表于 2016-8-28 23:20:37 | 显示全部楼层
阿满 发表于 2016-8-28 22:33
sqrt(5) = 2.236xxxxx
sqrt (5000000) = 2236.xxxx

这个 想法 不错。
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

alucardzhou 发表于 2016-9-5 00:19:29 | 显示全部楼层
可以分两步来得到小数点后一位和小数点后两位
比方我们得到了85的平方根个位为9
然后从9.0,9.1,9.2,...,10.0之间binary找出最合适小数点后一位于是找到9.2
接着再从9.20,9.21,...9.30之间找到最适合的小数点后两位。
这两步都是log11,可以认为是个常数吧
回复 支持 反对

使用道具 举报

小A要当码农 发表于 2016-9-5 01:15:16 | 显示全部楼层
额,请问LinkedIn现在是开始放new grad headcount了嘛
回复 支持 反对

使用道具 举报

 楼主| ariesxiao 发表于 2016-9-9 05:50:33 | 显示全部楼层
alucardzhou 发表于 2016-9-5 00:19
可以分两步来得到小数点后一位和小数点后两位
比方我们得到了85的平方根个位为9
然后从9.0,9.1,9.2,... ...

这个思路不错,我没想到从9.0到9。1 到9.2这样枚举,我还试图在0.01到0.99之间做二分,然后发现这样没法二分
回复 支持 反对

使用道具 举报

alucardzhou 发表于 2016-9-9 09:59:42 | 显示全部楼层
ariesxiao 发表于 2016-9-8 16:50
这个思路不错,我没想到从9.0到9。1 到9.2这样枚举,我还试图在0.01到0.99之间做二分,然后发现这样没法 ...

感觉0.01到0.99可以二分吧。
你取整数值是从1到99,计算的时候把整数值转换成0.01到0.99之间,然后算数值平方,比较大小就可以了吧
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2018-5-25 20:59

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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