回复: 11
跳转到指定楼层
上一主题 下一主题
收起左侧

linkedin的一个题,求解答

全局:

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

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
其实就是leetcode上的题,求整数x的平方根,当时不该嘴贱问一句,结果是不是也要求整数
然后那个面试官说,
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
做出来,不知道二分和保留两位小数怎么兼容

然后就跪了

上一篇:除了亚马逊OA只能用JAVA或C++还有别的公司也这样吗?
下一篇:新鲜snapchat OA
推荐
 楼主| ariesxiao 2016-8-28 12:38:32 | 只看该作者
全局:
dhldxy 发表于 2016-8-28 12:18
hmm,是不是还是一样用二分法?就是在比较的时候,
               if(abs(prod-x)  0.01){
             ...

我之前做LEETCODE这个题的时候代码是这个,当时没想清楚怎么改成保留两位小数的情况
public class Solution {
    public int mySqrt(int x) {
        if (x<0)
        return -1;
        
        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;
            }
            else if (mid < x/mid)
            {
                lastMid = mid;
                start = mid + 1;
            }
            else
            {
                end = mid - 1;
            }
        }
        
        return lastMid;
        
    }
}
回复

使用道具 举报

推荐
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;
                }
不是很确定。

补充内容 (2016-8-28 12:56):
发现错了。 mid - 1 和  mid + 1这样就不对了。
回复

使用道具 举报

全局:
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之间,然后算数值平方,比较大小就可以了吧
回复

使用道具 举报

🔗
阿满 2016-8-28 12:35:22 | 只看该作者
全局:
long x = x* 1000000 然后再用原来的2分
回复

使用道具 举报

🔗
 楼主| 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

这个 想法 不错。
回复

使用道具 举报

🔗
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,可以认为是个常数吧
回复

使用道具 举报

全局:
额,请问LinkedIn现在是开始放new grad headcount了嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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