Redian新闻
>
老教授的悔悟 (转载)
avatar
老教授的悔悟 (转载)# Biology - 生物学
i*9
1
void reversePairsOfLinkList(Node*& head) {
}
[] => []
[A,B] => [B, A]
[A, B, C] => [B, A, C]
[A, B, C, D, E, F, G] => [B, A, D, C, F, E, G]
这道题有些trick,我自己在白板上写的有些问题,在提示是下才写对。试试你能不能一
次写的无错误。(指定要对pointer操作,不能touch data)
avatar
p*x
2
【 以下文字转载自 Notice 讨论区 】
发信人: deliver (自动发信系统), 信区:
标 题: phynix 封 deedeezz 在 Money 版
发信站: BBS 未名空间站自动发信系统 (Tue Aug 14 23:11:33 2012)
【此篇文章是由自动发信系统所张贴】
由于 deedeezz 在 Money 版的 滥发广告 行为,
被暂时取消在本版的发文权力 14 天。
版主:phynix
Tue Aug 14 23:11:28 2012
avatar
B*r
3
【 以下文字转载自 Dreamer 讨论区 】
发信人: Dreamer (不要问我从哪里来), 信区: Dreamer
标 题: 老教授的悔悟
发信站: BBS 未名空间站 (Sat Sep 21 13:21:15 2013, 美东)
没有150 以上的天然智商, 读生物PhD真的没有前途。如果你智商还行, 但不到150,
除非你特别爱好, 如果是为了生计, 又何必搞生物? 当然不是说干生物科研需要更
高的智商。 没有与其他专业比较的意思。 也没法比。
我是搞生物的, 好不容易混到了一所二流大学的所谓终身教授的位子,还是战战兢兢
。 生怕哪天丢了经费。 论文也不好发, 一般发2-3流杂志如JBC 一类的。 最后也
无非是混个工作。
我不知道自己的智商是多少。 但是我有三个儿女, 都 test 过。 他们都是在140-145
之间。老婆平时表现似乎与我不相上下。 虽说智商考试应该与教育无关, 实际上是
不可能的。 所以, 我想我儿女的 自然智商在130 左右吧, 毕竟我们家教还是比较好
的。 推算一下, 这个大概也是我自己的智商。 在普通人群中算是高的了. 在美国华
人知识层, 那就一般了, 至多中上。 我老努力又努力, 脚踏实地, 任劳任怨, 混
到了今天。 没过过 一天轻松的日子, 平均每周工作60多小时(实打实的, 按美国人
的计算方法, 该是每周 80小时了)。 比如现在灌水, 我就把这1小时扣除了。 老美
当然算在工作时间中了。 就这样, 天天就是混不下去的感觉。终身了也一样。
我三个儿女, 两个已成人。 读了比较实际的专业。 本科毕业, 就各得六位数的
offer, 两年后的今天, 工资都已 经比我高了。 很欣慰他们没有走我的路。 没有150
以上的天然智商, 搞学术那是自讨苦吃。 弄最后也就是混口饭吃。 既如此, 何必
要在学术界混? 我要是能重新来一次, 就去读个商学院什么的, 然后去公司, 或者
读个医什么的。这些专业的朋友别误解: 不是说这些专业要求智商低, 但是这些专业
中, 与搞科研同等的成功程度, 获得的经济回报高于生物科研几倍, 这个是事实。
年轻时完全不予考虑。太瞧不起那些以盈利为目的的行业了, 尤其是那些以赚钱为目
的人。觉得自己太厉害了, 搞普通的工作赚钱, 岂不大才小用?现在当然是一条道走
到黑了。 最可怕的不是蠢, 而是不知道自己蠢。 某种程度上这话用在我老身上也合
适啊。 这不, 自以为很厉害, 最后名也没有,利也没有。 当时一起读PhD 同胞,
三天两头来问我问题,实验问题解决不了。论文也一知半解。 我们觉得很容易的事,
他就搞不清相互关系, 找不出原因。最后qualify 也没过。但此人会考试。 教科书层
次的, 死板的东西, 他没问题。 人家后来去读牙医了。 现在自己开诊所。 年入近
40万, 是我的三倍。 我老还算幸运, 至少有稳定的工作。 另一位同胞, 智商明显
比这位牙医高, 最后还是没有拿到AP. (智商应该与我不相上下, 但肯定没有我拼命
)。 现在还是高级博士后。工资是我的一半, 那位牙医同学的1/6。 现在工作还比牙
医辛苦, 无论是体力还是智力。
写完了还得接着忽悠学生去。 当然, 我没有懂中文的学生。 不招中国人,不想害同
胞。
avatar
H*d
4
void pairWiseSwap(struct node *head)
{
struct node *temp = head;
while(temp != NULL && temp->next != NULL)
{
swap(&temp->data, &temp->next->data);
temp = temp->next->next;
}
}
avatar
W*o
5
如果不是挖坑,这个叫兽还有些良知和自知

145

【在 B*****r 的大作中提到】
: 【 以下文字转载自 Dreamer 讨论区 】
: 发信人: Dreamer (不要问我从哪里来), 信区: Dreamer
: 标 题: 老教授的悔悟
: 发信站: BBS 未名空间站 (Sat Sep 21 13:21:15 2013, 美东)
: 没有150 以上的天然智商, 读生物PhD真的没有前途。如果你智商还行, 但不到150,
: 除非你特别爱好, 如果是为了生计, 又何必搞生物? 当然不是说干生物科研需要更
: 高的智商。 没有与其他专业比较的意思。 也没法比。
: 我是搞生物的, 好不容易混到了一所二流大学的所谓终身教授的位子,还是战战兢兢
: 。 生怕哪天丢了经费。 论文也不好发, 一般发2-3流杂志如JBC 一类的。 最后也
: 无非是混个工作。

avatar
i*9
6
指定要对pointer操作,不能touch data

【在 H**d 的大作中提到】
: void pairWiseSwap(struct node *head)
: {
: struct node *temp = head;
: while(temp != NULL && temp->next != NULL)
: {
: swap(&temp->data, &temp->next->data);
: temp = temp->next->next;
: }
: }

avatar
p*6
7
那干嘛叫人家 叫兽。
其实写的挺好,告诉所有想在科研混日子的人,要不你智商超高,要不你超爱科研,不
然赶紧另谋出路,生物路上走到tenure faculty也不过是这个死样子。

【在 W***o 的大作中提到】
: 如果不是挖坑,这个叫兽还有些良知和自知
:
: 145

avatar
H*d
8
哦,pointer
快忘光了,
一会看你公布答案吧,呵呵

【在 i**9 的大作中提到】
: 指定要对pointer操作,不能touch data
avatar
w*h
9
读博士做教授有啥好幡然悔悟的。。。
需要幡然悔悟的是你这种苦逼屌丝做科研的习惯,和智商有啥关系?
你见过几个教授的智商低于130的?我的140,测过多次。。。
有三个孩子,还算不错啦,至少不像某些人学术也就那样吧,
还要把自己整得日理万机连家都不要的强。。。
作学术的,也不是说只有牛顿爱因斯坦做的才有意义,
每一砖每一瓦每一草每一叶都能看到意义,你才是真的悟了,
才是真的尊重科学,爱科学,自己屌丝把这么有趣的东西搞得trivial,怪谁?
有了tenure,没那么大压力,无论是专业还是喜好,都可以追逐些真正的乐趣,
修身养性,内外兼修,有何悔悟的?

145

【在 B*****r 的大作中提到】
: 【 以下文字转载自 Dreamer 讨论区 】
: 发信人: Dreamer (不要问我从哪里来), 信区: Dreamer
: 标 题: 老教授的悔悟
: 发信站: BBS 未名空间站 (Sat Sep 21 13:21:15 2013, 美东)
: 没有150 以上的天然智商, 读生物PhD真的没有前途。如果你智商还行, 但不到150,
: 除非你特别爱好, 如果是为了生计, 又何必搞生物? 当然不是说干生物科研需要更
: 高的智商。 没有与其他专业比较的意思。 也没法比。
: 我是搞生物的, 好不容易混到了一所二流大学的所谓终身教授的位子,还是战战兢兢
: 。 生怕哪天丢了经费。 论文也不好发, 一般发2-3流杂志如JBC 一类的。 最后也
: 无非是混个工作。

avatar
g*d
10
void reversePairsOfLinkList(Node **head) {
Node *c = *head;
if(!(*head)||!(*head->next)) return;
*head = *head->next;
while(c&&c->next){
n=c->next->next;
c->next->next=c;
c->next=n;
c=n;
}
}
avatar
b*k
11
测测树上掉梨啊桃啊枣子啊符不符合自由落体 俺觉得这个没啥意义的 能看出意义的我
挺佩服

【在 w********h 的大作中提到】
: 读博士做教授有啥好幡然悔悟的。。。
: 需要幡然悔悟的是你这种苦逼屌丝做科研的习惯,和智商有啥关系?
: 你见过几个教授的智商低于130的?我的140,测过多次。。。
: 有三个孩子,还算不错啦,至少不像某些人学术也就那样吧,
: 还要把自己整得日理万机连家都不要的强。。。
: 作学术的,也不是说只有牛顿爱因斯坦做的才有意义,
: 每一砖每一瓦每一草每一叶都能看到意义,你才是真的悟了,
: 才是真的尊重科学,爱科学,自己屌丝把这么有趣的东西搞得trivial,怪谁?
: 有了tenure,没那么大压力,无论是专业还是喜好,都可以追逐些真正的乐趣,
: 修身养性,内外兼修,有何悔悟的?

avatar
g*e
12
I think using recursion is easy to solve this
public static final Node reversePair(Node n) {
if (n==null || n.next==null)
return n;

Node first = n;
Node second = n.next;
Node third = second.next;
second.next = first;
first.next = reversePair(third);

return second;
}

【在 i**9 的大作中提到】
: void reversePairsOfLinkList(Node*& head) {
: }
: [] => []
: [A,B] => [B, A]
: [A, B, C] => [B, A, C]
: [A, B, C, D, E, F, G] => [B, A, D, C, F, E, G]
: 这道题有些trick,我自己在白板上写的有些问题,在提示是下才写对。试试你能不能一
: 次写的无错误。(指定要对pointer操作,不能touch data)

avatar
l*m
13
往小里吃饭拉屎都是享受,往大里说千秋功过都是浮云。
生命就是要找点意义,哄哄自己开心。

【在 b******k 的大作中提到】
: 测测树上掉梨啊桃啊枣子啊符不符合自由落体 俺觉得这个没啥意义的 能看出意义的我
: 挺佩服

avatar
n*s
14
Node* partial_reverse(Node* head){
Node* headnew=head;
Node* p1 = head;
if(p1==NULL) return NULL;
Node* p2 = head->next;
Node* pre=NULL;
while(p2!=NULL){
if(headnew==head)
headnew = p2;
else
pre->next = p2;
p1->next = p2->next;
p2->next = p1;
pre = p1;
p1 = p1->next;
if(p1!=NULL)
p2 = p1->next;
else
break;
}
return headnew;
}
avatar
w*h
15
我们谈学术,首先有个共同认可的底线,行么?
你说的,首先得能通过peer review。。。

【在 b******k 的大作中提到】
: 测测树上掉梨啊桃啊枣子啊符不符合自由落体 俺觉得这个没啥意义的 能看出意义的我
: 挺佩服

avatar
g*s
16
yes, recursion is easy for this one.

【在 g**e 的大作中提到】
: I think using recursion is easy to solve this
: public static final Node reversePair(Node n) {
: if (n==null || n.next==null)
: return n;
:
: Node first = n;
: Node second = n.next;
: Node third = second.next;
: second.next = first;
: first.next = reversePair(third);

avatar
a*k
17
现实不就是搞出个pathway,然后有意义的科学家们各种奇怪的物种全搞一遍?
测yeast凋亡比哺乳类晚了无数年吧,照样做得风生水起。有些人恨不得把所有物种的
凋亡现象都看一遍。我看意义不比桃啊,枣啊的自由落体强。

【在 w********h 的大作中提到】
: 我们谈学术,首先有个共同认可的底线,行么?
: 你说的,首先得能通过peer review。。。

avatar
i*e
18
Gate:
很好!递归的确在某些情况可以更简单解决。
另外,guitarnerd 的代码有 bug,没有处理特殊状况。
这让我想起这道链表题,比这题还要更 tricky 些:
You are given two linked lists representing two non-negative numbers. The
digits are stored in reverse order and each of their nodes contain a single
digit. Add the two numbers and return it as a linked list.
你可以在这里输入你的代码,网站会自动以大量测试数据来检测你是否答对。你可以试
试看能不能第一次写就答对。
http://www.ihas1337code.com/onlinejudge
以下是我的递归与非递归的解法。
Iterative:
void reversePairsOfLinkList(Node *& head) {
if (!head) return;
Node *p1 = head;
while (p1) {
Node *p2 = p1->next;
if (!p2) return;
if (p1 == head)
head = p2;
Node *next = p2->next;
p2->next = p1;
p1->next = (next && next->next ? next->next : next);
p1 = next;
}
}
Recursive:
void recReverse(Node *& head) {
if (!head || !head->next) return;
Node *p1 = head->next;
Node *p2 = head->next->next;
p1->next = head;
head->next = p2;
head = p1;
recReverse(head->next->next);
}
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
avatar
q*u
19
reviewer也就3,4个,作者7,8人,一共10来个人拍手叫好的东西就这么有意思吗?你去
千人大会上讲讲,多少人有兴趣听完你的story。现在学术太细化了,你还别埋汰别人
不care,想想您的学术活动多少人得了益。。。。就和拍电影写歌写小说一样,没市场
的东西自然觉得失落,人都是社会人。

【在 w********h 的大作中提到】
: 我们谈学术,首先有个共同认可的底线,行么?
: 你说的,首先得能通过peer review。。。

avatar
f*g
20
我给贡献一个非递归的, 请指正
void rev() {
Node** cur = &head;
while( *cur!=0 && (*cur)->next!=0 ) {
Node* second = (*cur)->next;
(*cur)->next = second->next;
second->next = (*cur);
(*cur) = second;
cur = &((*cur)->next->next);
}
}
avatar
b*k
21
分析下梨从树上掉下来是否和苹果一样都符合某个规律,然后再分析分析风速啊温度啊
梨的成熟程度啊对梨掉下来的速度变化的影响,俺觉得能套上90%的生物paper....

【在 w********h 的大作中提到】
: 我们谈学术,首先有个共同认可的底线,行么?
: 你说的,首先得能通过peer review。。。

avatar
g*e
22
你的网站做的挺不错的。
链表加法的题目不久前写了一个,主要是要注意进位(包括最后的最高位进一),还有
就是不同长度的两个链表的加法,当一个链表遍历结束,另外一个还没结束的时候,要
循环把没结束的那个全部加到结果去。用递归或循环做都行

single

【在 i**********e 的大作中提到】
: Gate:
: 很好!递归的确在某些情况可以更简单解决。
: 另外,guitarnerd 的代码有 bug,没有处理特殊状况。
: 这让我想起这道链表题,比这题还要更 tricky 些:
: You are given two linked lists representing two non-negative numbers. The
: digits are stored in reverse order and each of their nodes contain a single
: digit. Add the two numbers and return it as a linked list.
: 你可以在这里输入你的代码,网站会自动以大量测试数据来检测你是否答对。你可以试
: 试看能不能第一次写就答对。
: http://www.ihas1337code.com/onlinejudge

avatar
a*t
23
那按照原作者的说法, 你的实际智商应该是120-130。

【在 w********h 的大作中提到】
: 读博士做教授有啥好幡然悔悟的。。。
: 需要幡然悔悟的是你这种苦逼屌丝做科研的习惯,和智商有啥关系?
: 你见过几个教授的智商低于130的?我的140,测过多次。。。
: 有三个孩子,还算不错啦,至少不像某些人学术也就那样吧,
: 还要把自己整得日理万机连家都不要的强。。。
: 作学术的,也不是说只有牛顿爱因斯坦做的才有意义,
: 每一砖每一瓦每一草每一叶都能看到意义,你才是真的悟了,
: 才是真的尊重科学,爱科学,自己屌丝把这么有趣的东西搞得trivial,怪谁?
: 有了tenure,没那么大压力,无论是专业还是喜好,都可以追逐些真正的乐趣,
: 修身养性,内外兼修,有何悔悟的?

avatar
i*e
24
恩,你说的对。
循环要考虑到各种状况,非常容易出错。而利用递归的思路就大大地把特别状况减少了。
我一直以为递归在没必要时都别用,因为容易出错。
但在这种情况之下,递归反而更不容易出错,相反循环解法相对复杂些而更容易导致错
误。
这让我对递归改观了,当循环的思路过于复杂的时候,尝试下递归的思路说不定能更简
洁些。
一些常见面试题的答案与总结 -
http://www.ihas1337code.com

【在 g**e 的大作中提到】
: 你的网站做的挺不错的。
: 链表加法的题目不久前写了一个,主要是要注意进位(包括最后的最高位进一),还有
: 就是不同长度的两个链表的加法,当一个链表遍历结束,另外一个还没结束的时候,要
: 循环把没结束的那个全部加到结果去。用递归或循环做都行
:
: single

avatar
w*h
25
whatever...my point is that this old professor should not blame IQ...

【在 a********t 的大作中提到】
: 那按照原作者的说法, 你的实际智商应该是120-130。
avatar
g*e
26
递归也就是面试的时候用用,production code用递归的还没见过,可能我看的少。我
觉得就算用也要加个递归层数的限制,不然程序容易崩溃

了。

【在 i**********e 的大作中提到】
: 恩,你说的对。
: 循环要考虑到各种状况,非常容易出错。而利用递归的思路就大大地把特别状况减少了。
: 我一直以为递归在没必要时都别用,因为容易出错。
: 但在这种情况之下,递归反而更不容易出错,相反循环解法相对复杂些而更容易导致错
: 误。
: 这让我对递归改观了,当循环的思路过于复杂的时候,尝试下递归的思路说不定能更简
: 洁些。
: 一些常见面试题的答案与总结 -
: http://www.ihas1337code.com

avatar
h*0
27
深有同感!
avatar
s*y
28
For the video decoder and audio decoder, commercial one.
Many decoder use the recursive call to extrace the header which is the video
and audio's metadata information. The function will recursive for 10-20, or
maybe 50. I forget why it needs to do in this way, but there is no better w
ay.
I encounter a lot of crash in this kind of function call due to the header n
oncompliant with standard. Most of these video are recorded by chinese "shan
zhai" cellphone.

【在 g**e 的大作中提到】
: 递归也就是面试的时候用用,production code用递归的还没见过,可能我看的少。我
: 觉得就算用也要加个递归层数的限制,不然程序容易崩溃
:
: 了。

avatar
a*k
29
哇,这是BSO自己也是教授?

【在 h**********0 的大作中提到】
: 深有同感!
avatar
i*e
30
恩,没错。
Production code 就算有递归的形式也尽量会转成非递归的,因为栈容易溢出。
另外,速度上循环通常比递归的形式还要快。
通常的情况,递归总体来说 debug 起来还是比循环相比麻烦不少。
一些常见面试题的答案与总结 -
http://www.ihas1337code.com

【在 g**e 的大作中提到】
: 递归也就是面试的时候用用,production code用递归的还没见过,可能我看的少。我
: 觉得就算用也要加个递归层数的限制,不然程序容易崩溃
:
: 了。

avatar
b*n
31

if (head == NULL || head->next == NULL) return;
Node *temp = head->next, *temp2 = NULL;
if (temp->next == NULL || temp->next->next == NULL)
head->next = temp->next;
else {
head->next = temp->next->next;
temp2 = temp->next;
}
temp->next = head;
reversePairsOfLinkList(temp2 == NULL? temp->next : temp2);

【在 i**9 的大作中提到】
: void reversePairsOfLinkList(Node*& head) {
: }
: [] => []
: [A,B] => [B, A]
: [A, B, C] => [B, A, C]
: [A, B, C, D, E, F, G] => [B, A, D, C, F, E, G]
: 这道题有些trick,我自己在白板上写的有些问题,在提示是下才写对。试试你能不能一
: 次写的无错误。(指定要对pointer操作,不能touch data)

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。