Flying Chess

Archive for February, 2012

February 26th, 2012 02] 屁股没坐热,只是目标不够坚定

 

找工作的事烦的焦头烂额,每天总想做点什么。东弄一些,西看一些,机子的环境是越来越杂,就总是没有实质性的东西出来。

“很多时候,你屁股没坐热,只是你的目标不够坚定。”

所以呢,在这个大杂烩的学科里打滚,抓紧每次接触新东西的机会,精力有限,别再让自己为当初的敷衍懊恼。

大杂烩中有林林总总的工作。看着别人的description,familiar with linux/unix kernel,就会陷入毕设没好好做的懊恼中。想走Java的路,就会发现自己只接触了Java,其他的就是知道个名号。

过的不好的人总会说往事不堪回首,今天这句话可算在自己身上验证了。前两天和老友聊天,最后发现一个大家半斤八两的经历。本科一个CS,一个SE。毕业后发现大家四年的代码量,就500行上下。我的那五百,大部分还是大一第一学期贡献的。“我们这种人,可算是牺牲在出国这个名号下了。”大一大二忙的想学习时就期末了。大三又在和ETS弄的不清不楚。大四管着一些不干自己的事。所以出到来,都过的特别心虚。

六年的活儿,咱现在得两年干完。所以呢,找工作时,受点磨难,make sense。自己挖的坑,迟早得自己填。

承认自己是个很会给自己设目标的人,那个小本子,左一页,右一页。左边写着和高度有关的目标,右边则写着和宽度有关的东西。虽然到最后,可能只有右边那页能满满的实现,但也得试着去实现,宁可到最后证明自己是个好高骛远的人。

2012的春天似乎就要过去,该踏踏实实。小本子上的愿望很多,所以呢,如果2012只剩下理想,也够我忙活好一阵了。

毕业时看到的一句话–“这世间有太多的依恋 2012不会是真的 它舍不得将它们毁灭。”

其实,就算是真的,想到自己还有那么多事情可以做,go hell。

我要,

世界末日前,向着优秀码农努力。

世界末日后,争取做一个好的PM。


Building a legacy. Brick by brick.

Posted in Life@UB | Comments (0)

February 21st, 2012 02]

He, 我想我有新东西玩了。









Posted in Photo | Comments (0)

February 19th, 2012 02] Missing number in array

 

不就找工作嘛,这回认真的了,可怕着咧。

 


 

Given an array

一般故事的开头都是这样,先是Given an array.

* Sorted version

这应该是最简单的版本,给定已排好的array, A[1...N],range from 1 to N+1。这意味着这个数组里有一个数是missing的。故事的结局嘛,就是找出这个missing的number。

-最简单的方法就是直接把array里的数从1叠加到N+1,得到real_sum。然后,再从1叠加到N+1,得到expectd_sum。最后expected_sum-real_sum得到的结果就是我们要找的missing number。

不过如果N很大,这种方法就会碰到over flow的情况。

unSorted && N非常大

-为了避免over flow或者题目变成unsorted,需要用第二种方法。

xor有个很有用的性质,同一个数和自己xor,将会抵消掉效果。所以我们可以先从array[1] xor到array[N+1],得到的结果再与1到N+1进行xor操作。因为xor的性质,出现两次的数都给xor掉,剩下的就是我们要找的那个missing number。

* 基于以上的两个版本,可以衍生出一些其他的题目。

例如,一个array里所有的Integer都出现了偶数次,只有一个出现了奇数次。xor之后,剩下的就是出现奇数次的数。

* 在geeksforgeeks上看到一个更贱的版本。原文在这。

Let us see an example.
   arr[] = {2, 4, 7, 9, 2, 4}
1) Get the XOR of all the elements.
     xor = 2^4^7^9^2^4 = 14 (1110)
2) Get a number which has only one set bit of the xor.
   Since we can easily get the rightmost set bit, let us use it.
     set_bit_no = xor & ~(xor-1) = (1110) & ~(1101) = 0010
   Now set_bit_no will have only set as rightmost set bit of xor.
3) Now divide the elements in two sets and do xor of
   elements in each set, and we get the non-repeating
   elements 7 and 9. Please see implementation for this
   step.
* 如果再有其他的版本,再来update这。