由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - C++ question, square root
相关主题
请教一道Google面试题问一个面试题,给两个数,求商和余数
Bitonic search的问题问一个小问题。今面试被塞住了
什么也不管了,给了一个烙印很差的feedback解决二分查找变体题的一种思路
Search for a Range - leetcode请问可以用二分法判断一个数组是否sorted吗?
曾经fail掉的一个电话面试以及题目Another interview problem ~
Visual C++6.0 break on exception?Google, Amazon面试college hire 和 experienced 有区别吗?
find duplication and missing in array这个掉鸡蛋的问题答案是啥?
求教一道老题G的电面题,是什么意思啊?
相关话题的讨论汇总
话题: return话题: int话题: middle话题: number话题: variables
进入JobHunting版参与讨论
1 (共1页)
w******g
发帖数: 67
1
Q:Given a positive integer, return the integer part of its square root.
Requirements: cannot use any math functions; can only use integer
variables, no double variables even for intermediate variables; as
efficient as possible.
我想的是:从i=1 到 n/2 挨个试,如果i*i >n 就停止。
这道题有什么trick或者要注意的吗? 多谢。
z****n
发帖数: 1379
2
用二分法
其实二分对于double sqrt(double)也是适用的,不知道面试题为什么都问int sqr
t(int),可能int你说的那种方法也行,而double你说的方法就不行了

【在 w******g 的大作中提到】
: Q:Given a positive integer, return the integer part of its square root.
: Requirements: cannot use any math functions; can only use integer
: variables, no double variables even for intermediate variables; as
: efficient as possible.
: 我想的是:从i=1 到 n/2 挨个试,如果i*i >n 就停止。
: 这道题有什么trick或者要注意的吗? 多谢。

h**6
发帖数: 4160
3
double sqrt(double)可以用牛顿法,而int则不行,只能二分,可见面试想考的是编程
而不是数学。
B*****g
发帖数: 193
4
不判断<1/2可以吗? like the following, the i must be < 1/2 of the value.
int intSqrt(int value)
{
int i = 0;
while ( true ){
if( i * i == value )
return i;
if( i * i > value )
return (i-1);
i++;
}
return 0;
}
a****d
发帖数: 114
5
笔算开方,九章算术里面有。

【在 w******g 的大作中提到】
: Q:Given a positive integer, return the integer part of its square root.
: Requirements: cannot use any math functions; can only use integer
: variables, no double variables even for intermediate variables; as
: efficient as possible.
: 我想的是:从i=1 到 n/2 挨个试,如果i*i >n 就停止。
: 这道题有什么trick或者要注意的吗? 多谢。

R*******e
发帖数: 36
6
这样看看:
unsigned int integerSquarRoot(unsigned int number)
{
unsigned int i= number/2;

while (i * i > number)
i /= 2;
while (i * i < number)
i += 1;
if (i * i == number)
return i;
else
return i-1;
}

【在 w******g 的大作中提到】
: Q:Given a positive integer, return the integer part of its square root.
: Requirements: cannot use any math functions; can only use integer
: variables, no double variables even for intermediate variables; as
: efficient as possible.
: 我想的是:从i=1 到 n/2 挨个试,如果i*i >n 就停止。
: 这道题有什么trick或者要注意的吗? 多谢。

w******g
发帖数: 67
7
多谢各位回复。
h**k
发帖数: 3368
8
既然用二分法,就应该一直用到底
precondition : left<= i < right. i is the answer.
left = 0;
right = number/2+1;
while( left + 1 < right )
{
middle = (left + right) / 2;
if( middle*middle == number )
return middle;
if( middle*middle < number )
left = middle;
else
right = middle;
}
return left;

【在 R*******e 的大作中提到】
: 这样看看:
: unsigned int integerSquarRoot(unsigned int number)
: {
: unsigned int i= number/2;
:
: while (i * i > number)
: i /= 2;
: while (i * i < number)
: i += 1;
: if (i * i == number)

1 (共1页)
进入JobHunting版参与讨论
相关主题
G的电面题,是什么意思啊?曾经fail掉的一个电话面试以及题目
谁给个数组分段题二分法的总结啊?Visual C++6.0 break on exception?
大家谈论算法时所说的“二分法”是不是就是所谓的binary search或是它的变形?find duplication and missing in array
继续研究数组分段题求教一道老题
请教一道Google面试题问一个面试题,给两个数,求商和余数
Bitonic search的问题问一个小问题。今面试被塞住了
什么也不管了,给了一个烙印很差的feedback解决二分查找变体题的一种思路
Search for a Range - leetcode请问可以用二分法判断一个数组是否sorted吗?
相关话题的讨论汇总
话题: return话题: int话题: middle话题: number话题: variables