由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 来贡献个小题.
相关主题
Pow X iterative的写法是什么样子的?DFS 堆栈溢出,怎么破?
BB onsite惨败而归 血的教训!究竟什么定义了DP
关于permutation和combination(求推荐)recursion以及把recursion转变为iteration的资料
请教数学类题目中对于1<<31的处理问个白痴问题,DP到底算不算递归?
两种DP问个最近面试里的题目
我发现我竟然学会了12种tree traversal的办法Figure out size of int without using sizeof()
"简单的"linklist的问题Non-recursive permutation
有人同看Populating Next Right Pointers in Each Node II的recursive写法么?大家看看这几道亚麻面试题怎么做?
相关话题的讨论汇总
话题: return话题: double话题: pow话题: power话题: xsquare
进入JobHunting版参与讨论
1 (共1页)
d*******d
发帖数: 2050
1
电面小题.
double power(double x, int n);
要求时间lg(n), 空间O(1);
y*******g
发帖数: 6599
2
linkedin?
B*******1
发帖数: 2454
3
What is your answer?

【在 d*******d 的大作中提到】
: 电面小题.
: double power(double x, int n);
: 要求时间lg(n), 空间O(1);

w*******e
发帖数: 1588
4
double power(double x, unsigned int n)
{
if (n == 0) return 1;
if (n == 1) return x;

int xsquare = x * x;
if (n % 2 == 1) // n is odd
{
return (x * power(xsquare, n / 2));
}
else // n is even
{
return power(xsquare, n / 2);
}
}
We can also write an iterative version, I think.
g**********y
发帖数: 14569
5
凑热闹
public double power(double x, int n) {
if (n < 0) return 1.0/power(x, -n);
double r = 1.0, pow = x;
while (n > 0) {
if ( (1 & n) > 0 ) r *= pow;
n >>= 1;
pow *= pow;
}
return r;
}
B*******1
发帖数: 2454
6
你这不是o(1) space的

【在 w*******e 的大作中提到】
: double power(double x, unsigned int n)
: {
: if (n == 0) return 1;
: if (n == 1) return x;
:
: int xsquare = x * x;
: if (n % 2 == 1) // n is odd
: {
: return (x * power(xsquare, n / 2));
: }

d*******d
发帖数: 2050
7
我跟火鸡做法相似。

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

r*******n
发帖数: 3020
8
double power(double x, int n){
if (n == 0) return 1;
if (n == 1) return x;
if (n % 2 == 0) return power(x*x, n/2);
else return(x*x, n/2)*x;
}

【在 d*******d 的大作中提到】
: 电面小题.
: double power(double x, int n);
: 要求时间lg(n), 空间O(1);

B*******1
发帖数: 2454
9
学习了。
谢谢。

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

B*******1
发帖数: 2454
10
空间O(1);?

【在 r*******n 的大作中提到】
: double power(double x, int n){
: if (n == 0) return 1;
: if (n == 1) return x;
: if (n % 2 == 0) return power(x*x, n/2);
: else return(x*x, n/2)*x;
: }

相关主题
我发现我竟然学会了12种tree traversal的办法DFS 堆栈溢出,怎么破?
"简单的"linklist的问题究竟什么定义了DP
有人同看Populating Next Right Pointers in Each Node II的recursive写法么?(求推荐)recursion以及把recursion转变为iteration的资料
进入JobHunting版参与讨论
y*******g
发帖数: 6599
11
最好转成unsigned然后在shift

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

w*******e
发帖数: 1588
12
If n = 4, it seems to return 1. Should we fix the last line like this?
return r * pow;

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

w*******e
发帖数: 1588
13
Never mind, you are right as n will end up with 1 to carry the final pow
value.

【在 w*******e 的大作中提到】
: If n = 4, it seems to return 1. Should we fix the last line like this?
: return r * pow;

w*******e
发帖数: 1588
14
Never mind, you are right as n will end up with 1 to carry the final pow
value.

【在 w*******e 的大作中提到】
: If n = 4, it seems to return 1. Should we fix the last line like this?
: return r * pow;

D*******e
发帖数: 151
15
If can use recursion, this is simple. But the restriction of O(1) space
becomes meaningless.
D*******e
发帖数: 151
16
Nice. But we also need to consider sign(x).

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

r*******n
发帖数: 3020
17
有什么好处?
谢谢

【在 y*******g 的大作中提到】
: 最好转成unsigned然后在shift
c****p
发帖数: 6474
18
没有必要吧。。负数的情况已经在第一行就排除了。

【在 y*******g 的大作中提到】
: 最好转成unsigned然后在shift
c****p
发帖数: 6474
19
怕最高位为1。

【在 r*******n 的大作中提到】
: 有什么好处?
: 谢谢

a********1
发帖数: 750
20
理论上right shift of signed 是implementation dependent

【在 c****p 的大作中提到】
: 没有必要吧。。负数的情况已经在第一行就排除了。
相关主题
问个白痴问题,DP到底算不算递归?Non-recursive permutation
问个最近面试里的题目大家看看这几道亚麻面试题怎么做?
Figure out size of int without using sizeof()Careercup上看到的一个google的题目 下面有个人回复很好玩
进入JobHunting版参与讨论
c****p
发帖数: 6474
21
多数情况下都是做成算术右移吧。。。

【在 a********1 的大作中提到】
: 理论上right shift of signed 是implementation dependent
y*******g
发帖数: 6599
22
反正没坏处

【在 c****p 的大作中提到】
: 多数情况下都是做成算术右移吧。。。
d*******d
发帖数: 2050
23
电面小题.
double power(double x, int n);
要求时间lg(n), 空间O(1);
y*******g
发帖数: 6599
24
linkedin?
B*******1
发帖数: 2454
25
What is your answer?

【在 d*******d 的大作中提到】
: 电面小题.
: double power(double x, int n);
: 要求时间lg(n), 空间O(1);

w*******e
发帖数: 1588
26
double power(double x, unsigned int n)
{
if (n == 0) return 1;
if (n == 1) return x;

int xsquare = x * x;
if (n % 2 == 1) // n is odd
{
return (x * power(xsquare, n / 2));
}
else // n is even
{
return power(xsquare, n / 2);
}
}
We can also write an iterative version, I think.
g**********y
发帖数: 14569
27
凑热闹
public double power(double x, int n) {
if (n < 0) return 1.0/power(x, -n);
double r = 1.0, pow = x;
while (n > 0) {
if ( (1 & n) > 0 ) r *= pow;
n >>= 1;
pow *= pow;
}
return r;
}
B*******1
发帖数: 2454
28
你这不是o(1) space的

【在 w*******e 的大作中提到】
: double power(double x, unsigned int n)
: {
: if (n == 0) return 1;
: if (n == 1) return x;
:
: int xsquare = x * x;
: if (n % 2 == 1) // n is odd
: {
: return (x * power(xsquare, n / 2));
: }

d*******d
发帖数: 2050
29
我跟火鸡做法相似。

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

r*******n
发帖数: 3020
30
double power(double x, int n){
if (n == 0) return 1;
if (n == 1) return x;
if (n % 2 == 0) return power(x*x, n/2);
else return(x*x, n/2)*x;
}

【在 d*******d 的大作中提到】
: 电面小题.
: double power(double x, int n);
: 要求时间lg(n), 空间O(1);

相关主题
How to elegantly solve this interview question?BB onsite惨败而归 血的教训!
c++ is too nasty关于permutation和combination
Pow X iterative的写法是什么样子的?请教数学类题目中对于1<<31的处理
进入JobHunting版参与讨论
B*******1
发帖数: 2454
31
学习了。
谢谢。

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

B*******1
发帖数: 2454
32
空间O(1);?

【在 r*******n 的大作中提到】
: double power(double x, int n){
: if (n == 0) return 1;
: if (n == 1) return x;
: if (n % 2 == 0) return power(x*x, n/2);
: else return(x*x, n/2)*x;
: }

y*******g
发帖数: 6599
33
最好转成unsigned然后在shift

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

w*******e
发帖数: 1588
34
If n = 4, it seems to return 1. Should we fix the last line like this?
return r * pow;

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

w*******e
发帖数: 1588
35
Never mind, you are right as n will end up with 1 to carry the final pow
value.

【在 w*******e 的大作中提到】
: If n = 4, it seems to return 1. Should we fix the last line like this?
: return r * pow;

w*******e
发帖数: 1588
36
Never mind, you are right as n will end up with 1 to carry the final pow
value.

【在 w*******e 的大作中提到】
: If n = 4, it seems to return 1. Should we fix the last line like this?
: return r * pow;

D*******e
发帖数: 151
37
If can use recursion, this is simple. But the restriction of O(1) space
becomes meaningless.
D*******e
发帖数: 151
38
Nice. But we also need to consider sign(x).

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

r*******n
发帖数: 3020
39
有什么好处?
谢谢

【在 y*******g 的大作中提到】
: 最好转成unsigned然后在shift
c****p
发帖数: 6474
40
没有必要吧。。负数的情况已经在第一行就排除了。

【在 y*******g 的大作中提到】
: 最好转成unsigned然后在shift
相关主题
请教数学类题目中对于1<<31的处理"简单的"linklist的问题
两种DP有人同看Populating Next Right Pointers in Each Node II的recursive写法么?
我发现我竟然学会了12种tree traversal的办法DFS 堆栈溢出,怎么破?
进入JobHunting版参与讨论
c****p
发帖数: 6474
41
怕最高位为1。

【在 r*******n 的大作中提到】
: 有什么好处?
: 谢谢

a********1
发帖数: 750
42
理论上right shift of signed 是implementation dependent

【在 c****p 的大作中提到】
: 没有必要吧。。负数的情况已经在第一行就排除了。
c****p
发帖数: 6474
43
多数情况下都是做成算术右移吧。。。

【在 a********1 的大作中提到】
: 理论上right shift of signed 是implementation dependent
y*******g
发帖数: 6599
44
反正没坏处

【在 c****p 的大作中提到】
: 多数情况下都是做成算术右移吧。。。
A**u
发帖数: 2458
45
学习了

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

s*****k
发帖数: 18
46
精彩

【在 g**********y 的大作中提到】
: 凑热闹
: public double power(double x, int n) {
: if (n < 0) return 1.0/power(x, -n);
: double r = 1.0, pow = x;
: while (n > 0) {
: if ( (1 & n) > 0 ) r *= pow;
: n >>= 1;
: pow *= pow;
: }
: return r;

1 (共1页)
进入JobHunting版参与讨论
相关主题
大家看看这几道亚麻面试题怎么做?两种DP
Careercup上看到的一个google的题目 下面有个人回复很好玩我发现我竟然学会了12种tree traversal的办法
How to elegantly solve this interview question?"简单的"linklist的问题
c++ is too nasty有人同看Populating Next Right Pointers in Each Node II的recursive写法么?
Pow X iterative的写法是什么样子的?DFS 堆栈溢出,怎么破?
BB onsite惨败而归 血的教训!究竟什么定义了DP
关于permutation和combination(求推荐)recursion以及把recursion转变为iteration的资料
请教数学类题目中对于1<<31的处理问个白痴问题,DP到底算不算递归?
相关话题的讨论汇总
话题: return话题: double话题: pow话题: power话题: xsquare